Как разместить несколько колб в одном док-контейнере? - PullRequest
0 голосов
/ 10 июня 2019

В проекте у меня есть два колб-приложения, первый api вызывается для пакета документов и классифицирует их по прогнозируемым классам, и он поддерживает состояние всех пакетов в файле json.Работа второго API заключается в том, чтобы сообщать о состоянии определенного пакета, по которому он был обработан, путем чтения файла состояния.Теперь мы не можем выполнять приложения в разных контейнерах, так как оба имеют зависимость от файла.Api, сообщающий о статусе, сообщает текущее состояние пакета, поэтому мы также не можем дождаться, пока обработчик API завершит свое завершение, а затем экспортировать файл состояния для использования вторым API.Как я должен подходить к этой проблеме, любые выводы будут очень полезны.

Первоначально я пытался эти строки в файле Docker:

CMD ["python3", "./pollingAPI.py"] CMD ["python3", "./m_api.py"]

Я также попробовал nohup в команде, но безрезультатно:

RUN nohup python3 pollingAPI.py & sleep 5 CMD ["python3", "./m_api.py"]

Использование экрана также не может работать:

RUN nohup python3 pollingAPI.py & sleep 5 && screen -S myScreen CMD ["python3", "./m_api.py"]

1 Ответ

0 голосов
/ 10 июня 2019

Итак, согласно рекомендациям Docker, в каждом контейнере должно быть только одно основное приложение, работающее в контейнере. Причина в том, что вы хотите, чтобы ваше приложение работало на PID 1 и принимало все команды останова само по себе. Лучше всего всегда запускать два отдельных контейнера, каждый из которых запускает одно приложение.

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

https://docs.docker.com/config/containers/multi-service_container/

...