经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
Docker部署Node.js的方法步骤
来源:jb51  时间:2018/11/27 9:57:16  对本文有异议

前言

项目中会用到node做中间层,部署node则是用到了docker,在这里总结、记录下部署要点和步骤;关于docker的介绍和安装这里就不赘述了,网上也有很多相关的教程和文章了,需要可自行搜索查看。

项目结构

  1. `-- docker-node
  2. |-- data
  3. |-- server
  4. |-- app.js
  5. |-- Dockerfile
  6. |-- process.yml
  7. |-- package.json
  8. |-- docker-compose.yml

1、创建Node.js程序

app.js

  1. const express = require('express');
  2. const app = express();
  3.  
  4. app.get('/', (req, res) => res.send('hello world!'));
  5.  
  6. app.listen(3008);

2、创建Dockerfile

  1. FROM node:8.9-alpine
  2.  
  3. RUN mkdir -p /usr/src/app
  4.  
  5. WORKDIR /usr/src/app
  6.  
  7. RUN npm set registry https://registry.npm.taobao.org/
  8.  
  9. RUN npm install
  10.  
  11. CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]

从Dockerfile中可以看到我们是通过pm2-docker运行node应用的,利用PM2我们可以监听文件变化,达到应用重启、日志分存等效果;这里我们需要一个process.yml的配置文件,相关用法可以查看PM2文档。

process.yml

  1. apps:
  2. - script : 'app.js'
  3. name : 'dokcer-node'
  4. exec_mode: 'fork'
  5. watch : true
  6. instances: 1
  7. log_date_format : 'YYYY-MM-DD HH:mm Z'
  8. ignore_watch: ['node_modules']

3、创建docker-compose.yml

生产环境上我们用到往往不只一个容器,我们可以通过一个配置文件来管理多个Docker容器,然后使用docker-compose来启动,停止、重启应用。

docker-compose.yml

  1. version: "3.0"
  2. services:
  3. server_node:
  4. container_name: server-node
  5. build:
  6. context: ./server
  7. volumes:
  8. - ./server:/usr/src/app
  9. ports:
  10. - "3008:3008"
  11. environment:
  12. - TZ=Asia/Shanghai
  13.  
  14. portainer:
  15. image: portainer/portainer:1.11.4
  16. container_name: portainer
  17. expose:
  18. - "9000"
  19. ports:
  20. - "9000:9000"
  21. volumes:
  22. - /var/run/docker.sock:/var/run/docker.sock
  23. - ./data/portainer:/data
  24. environment:
  25. - TZ=Asia/Shanghai

4、启动容器

上述几个文件创建完毕,我们执行下面的命令,则会创建我们的镜像并且启动容器

  1. $ docker-compose -f docker-compose.yml up -d

5、测试

1、访问本地的3008端口

2、测试当代码变化,node自动重启功能,我们把"hello world!"改为"restart!!!!",再次刷新页面

3、利用Portainer管理容器;可视化的界面相比命令行来说,我们可以很方便、快速查看容器日志、容器配置、状态、以及对进行重启、删除等操作;我们访问本地9000端口即可(docker-compese.yml中配置),结果如下。

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号