无法在docker alpine映像的pm2中运行bash脚本

时间:2018-11-07 12:03:09

标签: bash docker pm2 alpine

我已经从以下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中运行。有什么问题吗?

1 个答案:

答案 0 :(得分:1)

问题在于,在高山地区,bash默认未安装。 pm2通过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'