不能 运行 bash pm2 在 docker alpine 图像上的脚本

Can not run bash script in pm2 on docker alpine image

我已经从以下 Dockerfile 创建了一个镜像。

FROM alpine
WORKDIR /usr/src/app
RUN apk add nodejs-current
RUN apk add nodejs-npm
RUN npm install pm2 -g
COPY process.yaml .
CMD pm2 start process.yaml --no-daemon --log-date-format 'DD-MM 
HH:mm:ss.SSS'

process.yaml 看起来像这样:

- script: ./run-services.sh
  watch : false

但是 run-services.sh 在我的 docker 中没有 运行。有什么问题?

问题是在 alpine 中默认没有安装 bashpm2 通过 bash 命令运行 bash 个脚本文件。所以有两种方法可以解决这个问题:

  1. 正在将默认 pm2 解释器从 bash 更改为 /bin/sh

    - script: ./run-services.sh
      interpreter: /bin/sh
      watch : false
    
  2. 正在高山中安装 bash。因此 Dockerfile 更改如下:

    FROM alpine
    RUN apk update && apk add bash
    WORKDIR /usr/src/app
    RUN apk add nodejs-current
    RUN apk add nodejs-npm
    RUN npm install pm2 -g
    COPY process.yaml .
    CMD pm2 start process.yaml --no-daemon --log-date-format 'DD-MM 
    HH:mm:ss.SSS'