写给前端的Docker实战教程(18)

网址:pxer.pea3nut.org源码:github/pxer-homepage我打算怎么做

网站使用 Ejs 模板渲染页面。在没迁移 Docker 之前,若我想更新线上网站中内容时,需要:

本地修改好 Ejs 或者其他文件手动通过 FTP 上传到服务器在服务器端重启 Nodejs 进程。若有 npm 包依赖改动,需要在VPS服务器上手动执行npm installgit push更新 Github 源码稍微有点麻烦,因此我打算这样改:

执行git push自动检测到 github 有代码更新,自动打包出一个 Docker 镜像CI 编译完成后,SSH 登录 VPS,删掉现有容器,用新镜像创建一个新容器而这样做的好处是:

不必再手动 FTP 上传文件不必手动维护服务器的 Nodejs 运行环境实施

具体的过程和处理静态站点没有什么特别的区别,无非是:

编写 Dockerfile 文件在 CI 时自动打包镜像在VPS增加一个 Nginx 反向代理这次就不重复讲了,具体的配置可以参考项目中的相关文件

Tips: 你可能发现了 Dockerfile 中的ENTRYPOINT命令必须指定一个前台进程。若你的 Nodejs 应用是使用 PM2 进行保活的,你需要替换pm2 start app.js为pm2-docker app.js

推荐阅读