bash скрипт не перемещается на следующую команду - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть простой сценарий bash следующим образом:

#!/bin/bash

gunicorn --bind 0.0.0.0:5000 --chdir server/ run:app -w 2
supervisord -c /usr/src/server/supervisord.conf -n

Этот сценарий должен запустить службу gunicorn, а затем запустить супервизор. Однако при вызове сценария запускается только служба gunciron, а не служба supervisor.

Сценарий вызывается из файла Docker следующим образом:

FROM python:3.8.1

RUN apt-get update && \
    apt-get -y install netcat && \
    apt-get clean
RUN apt-get install -y libpq-dev
RUN apt-get install -y redis-server

COPY . usr/src/server
WORKDIR /usr/src

RUN pip install -r server/requirements.txt
RUN chmod +x /usr/src/server/start.sh
CMD ["/usr/src/server/start.sh"]

Я пытался использовать && разделитель между двумя командами, но это, похоже, не имеет значения.

1 Ответ

1 голос
/ 16 апреля 2020

Сценарий bash перейдет к следующей команде после завершения выполнения первой команды. supervisord начнется, когда выйдет gunicorn.

Чтобы запустить Gunicorn в фоновом режиме, передайте опцию --daemon.

#!/bin/bash

gunicorn --bind 0.0.0.0:5000 --chdir server/ run:app -w 2 --daemon
supervisord -c /usr/src/server/supervisord.conf -n

Однако это не имеет особого смысла для меня. Поскольку вы используете Supervisor, почему вы не используете Gunicorn от Supervisor? Запуск демонов - это работа Супервайзера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...