Как написать несколько команд под тегом CMD в Dockerfile? - PullRequest
0 голосов
/ 04 февраля 2019

В моем файле start.sh есть следующая команда:

#!/bin/bash    
cd /opt/app
    ../node_modules/.bin/nodemon --inspect=0.0.0.0:9229 & swagger project edit -s -p 81 --host 0.0.0.0

, которую я хочу выполнить при запуске контейнера.Каким должен быть соответствующий синтаксис CMD в Dockerfile?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Часто, если вы используете два совершенно разных сервера, их так же легко запустить в двух отдельных контейнерах.

docker run ... -p 9229:9229 -d imagename \
  npm run nodemon --inspect=0.0.0.0:9229
docker run ... -p 9281:81 -d imagename \
  swagger project edit -s -p 81 --host 0.0.0.0

Если по какой-либо причине nodemon умирает, в вашем примере сценария оболочки,Докер просто не заметит.С другой стороны, если swagger умрет, это займет nodemon с ним.Если вы запускаете два отдельных контейнера, вы можете увидеть docker logs из двух вещей по отдельности, и вы можете указать политику --restart, если это вам поможет.

0 голосов
/ 04 февраля 2019

Вы можете вызвать start.sh с CMD.например:

FROM ubuntu:latest

RUN mkdir -p /src/app
WORKDIR /src/app
COPY . .

CMD ["/bin/bash", "/src/app/start.sh"]
...