不能 运行 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 中默认没有安装 bash
。 pm2
通过 bash
命令运行 bash 个脚本文件。所以有两种方法可以解决这个问题:
正在将默认 pm2
解释器从 bash
更改为 /bin/sh
- script: ./run-services.sh
interpreter: /bin/sh
watch : false
正在高山中安装 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'
我已经从以下 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 中默认没有安装 bash
。 pm2
通过 bash
命令运行 bash 个脚本文件。所以有两种方法可以解决这个问题:
正在将默认
pm2
解释器从bash
更改为/bin/sh
- script: ./run-services.sh interpreter: /bin/sh watch : false
正在高山中安装
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'