Sign inSign up

yisbug/nodejs-win

By yisbug

•Updated about 2 years ago

A basic Node.js image that includes puppeteer, pm2, cnpm, yarn, and pnpm.

Image
Languages & frameworks
0

1.1K

yisbug/nodejs-win repository overview

⁠更新
  1. tag 的大版本号保持和 nodejs 版本一致,修改为 20.x
⁠设计思路

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/⁠

Tag summary

Content type

Image

Digest

sha256:5d957d4db…

Size

830.1 MB

Last updated

about 2 years ago

docker pull yisbug/nodejs-win