Docker 部署 nodejs web应用
一、目标
将 node.js
的 web 项目部署到 docker 容器中。
node.js
的 web 开发框架暂时使用的是 egg。
目标:
- 实现宿主机端口 7001 与 容器端口 7001 映射
- 实现宿主机本地卷(目录)
/data/node/egg1
与容器/data/node/egg1/
目录映射,作为数据卷 npm start
后,容器后台运行 web 服务。
使用 7001 端口的原因是因为 egg 默认的端口就是 7001
二、实现
1、镜像:
直接使用的是官方的 node
镜像,没必要自己构建镜像。
$ docker pull node:latest
本地的 nodejs 的 web 项目使用的是 egg-cli
构建的项目
2、运行容器:
$ docker run -dit -p 7001:7001 -v /data/node/egg1:/data/node/egg1 --name egg1 node:latest
容器开启之后,会在后台一直运行,npm项目可能需要 npm install
,也可以在宿主机进行 npm install
,如果想在容器中进行,则需要进入容器进行操作。
$ docker exec -it 容器ID /bin/bash
进入容器之后,到 /data/node/egg1
进行 npm install
即可。
使用 exec 进入容器,再 exit 之后不会打断当前容器的运行状态
3、开启 node web 应用程序:
一般会使用 npm run dev
或者是 npm run start
来开启服务(egg 是这样子启动的),一种是开发一种是部署。如果开发阶段,则在进入容器之后(见 第2点 运行容器
),使用 npm run dev
然后不要退出,开个终端就可(这个比较方便)。如果是部署,则 npm run start
,自动进入守护进程模式。
文章已经结束啦
文章版权:Postbird-There I am , in the world more exciting!
本文链接:http://www.ptbird.cn/docker-nodejs-egg.html
转载请注明文章原始出处 !
扫描二维码,在手机阅读!