2016-10-23 3 views
0

Я создал Dockerfile со всеми моими конфигурациями.Запустите два сервера в одном контейнере докера

В конце концов, я хочу, чтобы запустить сервер один питона из python server.py а также сервер узла от npm start

Потому что я могу иметь один CMD или ENTRYPOINT, как я могу начать как эти два сервера, когда docker run выполнены?

Что такое докер, рекомендованный способ справиться с такими ситуациями?

ответ

2

Вы можете использовать supervisord, если хотите запустить несколько процессов в одном контейнере - например, в вашем случае npm и python server.

Для получения дополнительной информации отметьте documentation for supervisord.

Я просто выбираю некоторые важные части.

  • 1, Вам нужно будет установить supervisord для Docker изображения

Что-то вроде:

CentOS: `yum install supervisor` 

Ubuntu: `apt-get install -y supervisor` 
  • 2, скопируйте конфигурацию supervisord (supervisord.conf) в Докер изображение .

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

В вашем случае supervisord.conf должен выглядеть как пример ниже (не тестировалось):

[supervisord] 
nodaemon=true 

[program:npm] 
command=npm start 

[program:python] 
command=python server.py 

и запустить supervisord как CMD команду в Dockerfile:

... 
# install supervisord 
# copy supervisord configuration 
... 
# run supervisord 
CMD ["/usr/bin/supervisord"] 
+0

Я Жду» Попробуйте это еще, но надеюсь, что это сработает. Последний вопрос, могу ли я загрузить этот файл 'supervisord.conf' из моего репозитория git? & then, я должен запустить этот 'COPY supervisord.conf/etc/supervisor/conf.d/supervisord.conf' также? – DilumN

+0

@ DilumN Конечно. В большинстве случаев 'supervisord.conf' находится рядом с' Dockerfile', поэтому вы можете 'COPY', как в примере. И да, вы должны поставить 'supervisord.conf' в'/etc/supervisor/conf.d/supervisord.conf', потому что 'CMD ["/usr/bin/supervisord "]' возьмет этот файл 'conf' при запуске контейнера , – VladoDemcak

Смежные вопросы