Запустите несколько сценариев в образе докера - PullRequest
0 голосов
/ 18 января 2019

Привет, мне интересно, можно ли автоматически запускать два сценария одновременно при запуске Docker-контейнера. Первый скрипт должен запускать клиентское приложение, а второй запускать серверное приложение в качестве фона.

Ответы [ 3 ]

0 голосов
/ 18 января 2019

Официальная позиция Докера по этому поводу всегда заключалась в том, что лучше всего иметь только один сервис, работающий в контейнере. Тем не менее, они также поддерживают очень надежную документацию, описывающую возможные решения для доставки нескольких услуг в один контейнер.

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

Краткая сводка заключается в том, что, когда у вас есть несколько служб, вам необходим некоторый тип процесса "init", который будет выступать в роли родителя для всех служб в контейнере.

Есть два способа сделать это:

  1. Иметь сценарий оболочки, который запускает каждый сервис в качестве фонового задания.
  2. Запустите полную систему инициализации внутри контейнера и запустите службы в соответствии с этим.

Оба проблематичны. Первое, потому что bash не является системой инициализации, и вы можете столкнуться с различными видами головной боли, когда она не действует как единая. Второе, потому что система инициализации - довольно сложная вещь, которую нужно поместить в контейнер докера.

Сказав все это, лучшее решение - разделить ваши сервисы на два контейнера.

0 голосов
/ 18 января 2019

Как уже упоминалось, использование нескольких процессов не является рекомендуемой практикой.

Тем не менее, в некоторых сценариях требуется иметь несколько процессов. В этих случаях обычным подходом является использование менеджера процессов, такого как supervisor .

0 голосов
/ 18 января 2019

Вы можете использовать CMD в своих Dockerfile и использовать command & для параллельного запуска двух команд :

CMD server_command & client_command

(где server_command - команда, используемая для запуска сервера, а client_command - команда, используемая для запуска клиента)

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