Невозможно запустить bash-скрипт в pm2 на докере Alpine Image - PullRequest
0 голосов
/ 07 ноября 2018

Я создал изображение из следующего 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 не запускается в моем докере. В чем проблема?

1 Ответ

0 голосов
/ 07 ноября 2018

Проблема в том, что в alpine 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'
    
...