docker容器內安裝pm2
阿新 • • 發佈:2022-02-22
Dockerfile
ARG NODE6_VERSION FROM ${NODE6_VERSION} ARG TZ ARG NODE6_VERSION ARG CONTAINER_PACKAGE_URL # 修改映象源 RUN if [ "${CONTAINER_PACKAGE_URL}" != "" ]; then \ sed -i "s/dl-cdn.alpinelinux.org/${CONTAINER_PACKAGE_URL}/g" /etc/apk/repositories; \ fi # 解決could not get uid/gid問題,https://www.jianshu.com/p/d460ec3c693f RUN npm config set unsafe-perm true # 安裝指定版本,解決與node和npm的版本相容問題 RUN npm install [email protected] -g WORKDIR /www
.env檔案
#
# Node 6
#
NODE_VERSION=6.11.3-alpine
#
# 時區
#
TZ=Asia/Shanghai
#
# 映象源地址
#
# 可以為空,可選項如下:
# mirrors.163.com
# mirrors.aliyun.com
# mirrors.ustc.edu.cn
#
CONTAINER_PACKAGE_URL=mirrors.aliyun.com
docker-compose.yml
node6: build: context: ./node6 args: NODE6_VERSION: node:${NODE_VERSION} CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL} TZ: "$TZ" container_name: node6 deploy: resources: limits: cpus: '0.10' memory: 2G environment: - NODE_ENV=production volumes: - ${SOURCE_DIR}:/www/:rw expose: - "3000" stdin_open: true tty: true # 容器內使用pm2-runtime,而不是pm2,參考https://stackoverflow.com/questions/55936473/docker-exits-with-code-0-when-using-pm2-start command: pm2-runtime start npm --name 'fun' -- run start networks: my_net: ipv4_address: 172.18.0.8
pm2啟動命令pm2-runtime
這裡注意容器內使用pm2-runtime
,不能用pm2
,否則報
Docker exits with code 0 when using pm2 start
原因在於pm2是後臺執行,docker容器不知道pm2應用的啟動,使用pm2-runtime
可以進行前端執行,請檢視stackoverflow。