2015-12-31 4 views
0

Как запустить скрипт после запуска контейнера докеров.Запуск сценария bash внутри контейнера Docker

Вот часть моего Dockerfile:

FROM nodesource/trusty:0.10.30 
RUN mkdir /opt/app/ && cd /opt/app/ 
ADD ./api/package.json /opt/app/package.json 
RUN cd /opt/app/ && npm install 
ADD ./api/src /opt/app/src 
RUN npm -g install pm2 
WORKDIR /opt/app/src 
ADD start.sh start.sh 
RUN chmod 755 /opt/app/src/start.sh 
CMD ./opt/app/src/start.sh 

и start.sh содержит:

#!/usr/bin/env bash 
cd /opt/app/src 
node app.js --env=dev: 
pm2 updatePM2 
pm2 startup 
pm2 save 

PS: Когда я начинаю сценарий после входа в containerit работает отлично, но не при вызове он непосредственно из файла Docker

ответ

0

Путь не является допустимым аргументом для CMD. Оно должно быть:

CMD ["./opt/app/src/start.sh"] 
+0

Простая строка с пути может быть указан. Это форма «оболочка» – Matt

0

Вы установили WORKDIR в /opt/app/src то вы пытаетесь запустить скрипт относительно этого местоположения с помощью ./. Это означает, что вы пытаетесь запустить /opt/app/src/opt/app/src/start.sh

Попробуйте

CMD /opt/app/src/start.sh 
Смежные вопросы