小知识:使用Dockerfile部署nodejs服务的方法步骤

初始化Dockerfile

假设我们的项目名为express,在express项目中创建编辑Dockerfile文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ vim Dockerfile
FROM node:latest
RUN mkdir -p /home/www/express
WORKDIR /home/www/express
COPY . /home/www/express
RUN npm install
EXPOSE 3000
ENTRYPOINT [“npm”, “run”]
CMD [“start”]

这个文件包含了以下命令:

FROM node:latest – 指定使用最新版本的node基础镜像 RUN mkdir -p /home/www/express – 在容器内创建/home/www/express目录 WORKDIR /home/www/express – 将容器内工作目录设置为/home/www/express COPY . /home/www/express – 将宿主机当前目录下内容复制到镜像/home/www/express目录下 RUN npm install – npm install安装应用所需的NPM包 EXPOSE 3000 – 对外开放容器的3000端口 ENTRYPOINT [“npm”, “run”] – 容器启动后执行的命令。不可被docker run提供的参数覆盖 CMD [“start”] – 在容器启动时,执行的命令,可被docker run提供的参数覆盖

构建镜像

编写完Dockerfile文件后,就可以通过docker build命令来构建镜像:

?
1
$ sudo docker build -t test/express .

我们通过-t参数,将镜像命名为test/express。构建过程类似如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sending build context to Docker daemon 29.7 kB
Step 1/8 : FROM registry.src.followme.com:5000/node:v1
—> c99c549e8227
Step 2/8 : RUN mkdir -p /home/www/express-app
—> Running in 8be9a90629b0
—> b9f584851225
Removing intermediate container 8be9a90629b0
Step 3/8 : WORKDIR /home/www/express-app
—> 5072c31f9dd9
Removing intermediate container e9dbf4ce3d8b
Step 4/8 : COPY . /home/www/express-app
—> a4d1725f15ed
Removing intermediate container 30aa49765015
Step 5/8 : RUN yarn
—> Running in f181c243deaa
yarn install v1.3.2
[1/4] Resolving packages…
[2/4] Fetching packages…
[3/4] Linking dependencies…
[4/4] Building fresh packages…
Done in 9.46s.
—> d390931d73e6
Removing intermediate container f181c243deaa
Step 6/8 : EXPOSE 3000
—> Running in 94101ab38864
—> 43199a8a5a90
Removing intermediate container 94101ab38864
Step 7/8 : ENTRYPOINT npm run
—> Running in 80b1318962cf
—> 6b203c50e855
Removing intermediate container 80b1318962cf
Step 8/8 : CMD start
—> Running in a9909e537f59
—> d56eae48377c
Removing intermediate container a9909e537f59
Successfully built d56eae48377c

运行容器

镜像构建完成后,可以通过所构建的镜像创建/运行容器,从而实现express应用的 Docker 化部暑。

使用tets/express镜像运行一个容器:

?
1
$ sudo docker run -d –name experss-app -p 3000:3000 test/express

在以上操作中,我们通过test/express镜像运行了容器,并将容器命名为experss-app。运行容器,我们还指定了-d参数,该参数使容器以后台的方式运行。而-p参数将宿主机的3000端口映射到了容器的3000端口。运行容器后,可以通过docker ps命令看到运行中的容器。此时可通过localhost:3000访问服务。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://segmentfault.com/a/1190000012279808

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:使用Docker搭建ELK日志系统的方法示例

2023-4-4 12:01:22

建站知识

小知识:Docker私有仓库管理和删除本地仓库中的镜像

2023-4-4 12:15:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索