当前位置: 首页 » 综合知识 » it知识 » 正文

怎么使用Docker部署第一个应用程序

发布时间:2023-07-20 以下文章来源于网友投稿,内容仅供参考!

通常,开发工作流包括如下几点:

1、首先创建docker镜像,为应用程序的每个组件创建和测试单个容器。

2、将容器和所支持的基础设施组装成一个完整的应用程序,可以用docker stack file或者kubernetes的yaml来实现。

3、测试、共享和部署完整的容器化应用程序。

配置

1、从github克隆用于演示的示例项目。

git clone -b v1 https://github/docker-training/node-bulletin-board
cd node-bulletin-board/bulletin-board-app

这是一个简单的公告板应用程序,用node.js编写。在这个例子中,让我们假设是您编写了这个应用程序,现在正试图将其容器化部署起来,目录结构如图1.1所示。

图1.1

查看名字为dockerfile的文件,dockerfile文件描述了如何为容器组装私有的文件系统,并且还包含了一些描述如何基于此镜像运行容器的元数据。公告板应用程序dockerfile如图1.2所示。

图1.2

容器化部署应用程序的第一步是编写dockerfile。您可以把这些dockerfile命令当作是一个创建镜象的步骤。这个步骤如下:

1、使用版本号6.11.5的镜像作为本次构建的基础镜像。6.11.5基础镜像是由node.js官方提供的镜像

2、指定镜像文件系统的工作目录为/usr/src/app,即每次登录基于该镜像创建的容器,目录会自动切换到/usr/src/app

3、将package.json文件复制到镜像的当前位置,即/usr/src/app/package.json

4、在镜像文件系统中运行npm install命令(它将读取package.json以确定应用程序的节点依赖关系,并安装它们)

5、将应用程序的其余源代码从主机复制到镜像中。

您可以看到,这些步骤与您在主机上设置和安装应用程序时可能采取的步骤大致相同,但使用dockerfile允许我们在一个可移植、独立的docker镜像(node.js官方镜像)再次构建。

上面的步骤为镜像构建了文件系统,但是dockerfile中还有一行,cmd命令行。cmd ["要运行的程序","参数1","参数2"] 是告诉容器启动时要运行的命令或脚本,dockerfile中命令告知此镜像要支持的容器化进程是npm start。

注意:dockerfile只能有一条cmd命令,如果有多条,则执行最后一条。

一个dockerfile始终是从from命令开始,上述是一个简单的dockerfile文件,还有更多的dockerfile指令,请参阅dockerfile reference()。

构建镜像并测试

现在我们有了源代码和dockerfile,是时候构建我们的第一个镜像了,并确保从该镜像启动的容器能按预期工作。

注意:本示例使用的是linux容器。使用docker desktop的用户,右键单击系统托盘中的docker徽标,确保您的环境正在运行linux容器,若不是,请点击“switch to linux containers...",如图1.3所示,我当前演示环境使用的已是linux容器。

图1.3

1、进入powershell,并确保您当前目录是node-bulletin-board/bulletin-board-app,如图1.4所示,执行命令

# docker image build -t bulletinboard:1.0 .

图1.4

在构建最后会输出如下字样,表示构建镜像成功。

successfully built 49f9b9fb7daf

successfully tagged bulletinboard:1.0

上述命令表是创建一个名为bulletinboard的镜像(image),tag为1.0,如图1.5所示。

图1.5

2、基于bulletinboard镜像运行一个名为bb的容器并以后台方式运行,将容器内部端口8080,映射到宿主机的8000端口上。

# docker container run --publish 8000:8080 --detach --name bb bulletinboard:1.0

我们可以使用如下命令来查看run指命后可以跟哪些参数

# docker container run --help

我们登录到容器,查看到当前目录就是dockerfile中设置的工作目录,如图1.6所示。

图1.6

3、通过localhost:8000来访问您的应用,您将看到如下界面,如图1.7所示,则表示应用容器化部署成功,接下来就是进行测试、构建、发布、分享等过程。

图1.7

4、删除一个容器,即表示该容器的生命周期结束。

# docker container rm --force bb
  • • Linux Ecdsa密钥长度选择有何依据

    在Linux

  • • Linux Khook在内核监控中的应用如何

    Linux

  • • Linux Gsoap是否支持异步通信

    GSOAP是

  • • Linux Coremail如何提升用户体验

    提升Linu

  • • Linux Ecdsa算法有哪些局限性

    ECDSA

  • 哎呀音乐钢琴键盘学习《 钢琴主人训练营》 西瓜学琴
    郭蝈 陪练钢琴 30节课时 考级刚需 让孩子每一次练琴都是高质量的
    30天轻松学会五线谱 流行钢琴自学初级教程 牙牙学琴
    流行爵士钢琴实战技巧VIP课 - 继伟 哎呀音乐
    【海上钢琴师】原版 MT1990钢琴谱
    百首经典流行钢琴实战曲集 - 继伟
    雷费尔德电钢琴重锤88键专业考级儿童初学者数码电子钢琴家用
    小练咖 真人钢琴陪练 1v1服务 2999随时退 1课时50分钟 考级刚需
    雅马哈电钢琴88键重锤CLP735智能数码电子钢琴家用专业初学者考级
    【原装进口】Yamaha/雅马哈钢琴 b121 SC2原声静音钢琴
  • 珠海专业调钢琴
  • 天津宝坻区调钢琴
  • 天津静海区钢琴调音
  • 成都简阳市钢琴调律
  • 大连瓦房店市钢琴调音
  • 眉山调钢琴联系方式
  • 惠州大亚湾钢琴调琴师
  • 长治调琴师
  • 厦门湖里区钢琴调音师
  • 上海普陀区钢琴调音师