A basic Node.js image that includes puppeteer, pm2, cnpm, yarn, and pnpm.
1.1K
nodejs 应用打包镜像有几种方式,
第一种是直接将所有代码和 node_modules 打包到镜像再分发到各服务器并重启。这种方式比较适合较大规模集群部署。
第二种,代码和 node_modules 映射到容器,更新时覆盖代码,重启容器。容器镜像中执行 npm install。这种方式会因为执行 npm install 导致服务中断时间较长,甚至可能 npm install 失败导致服务器挂掉。
第三种,也就是本镜像所使用的方式,将 node_modules 目录提升至根目录 /app,代码目录置于子目录 /app/src。
当需要更新代码时,只需要覆盖代码,然后在 docker 容器外执行 npm install 更新依赖。 更新依赖后直接重启容器即可。 由于重启容器前已经更新了所有依赖,所以重启容器会非常快,减少了服务中断的时间。适合小项目小团队快速部署。
在 package.json 中定义对应的scripts,容器启动时执行的命令为 npm run docker。
默认代码目录:/app/src
默认日志目录:/root/logs
默认 package.json 路径:/app/package.json
默认 node_modules 目录:/app
对外暴露端口:9001, 9002
内置组件:puppteer, pm2, pnpm, yarn, cnpm。其中 puppteer 已经安装字体等相关依赖,不会显示乱码。
创建 docker 容器时,请自行映射代码目录到 /app/src,映射日志目录到 /root/logs,映射本地 package.json 到 /app/package.json。 端口映射至:9001 或 9002。
例如首次启动,映射代码目录、日志目录、package.json 文件、端口:
docker run -it --name=nodejs-win --restart=always -p 9001:9001 -p 9002:9002 -v /home/wwwsvr/nodejs-win:/app/src -v /home/wwwsvr/nodejs-win/package.json:/app/package.json -v /home/logs/nodejs-win:/root/logs -d nodejs-win
代码更新时,首先将代码发布至目标目录,然后执行 npm install,之后重启容器即可。
docker exec -it nodejs-win /bin/bash -c "cd /app && npm install"
docker restart nodejs-win
也可以使用 pnpm:
docker exec -it nodejs-win /bin/bash -c "cd /app && pnpm install"
docker restart nodejs-win
如需使用 cnpm,请参考:https://npmmirror.com/
Content type
Image
Digest
sha256:5d957d4db…
Size
830.1 MB
Last updated
about 2 years ago
docker pull yisbug/nodejs-win