Вы можете использовать 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"]
Я Жду» Попробуйте это еще, но надеюсь, что это сработает. Последний вопрос, могу ли я загрузить этот файл 'supervisord.conf' из моего репозитория git? & then, я должен запустить этот 'COPY supervisord.conf/etc/supervisor/conf.d/supervisord.conf' также? – DilumN
@ DilumN Конечно. В большинстве случаев 'supervisord.conf' находится рядом с' Dockerfile', поэтому вы можете 'COPY', как в примере. И да, вы должны поставить 'supervisord.conf' в'/etc/supervisor/conf.d/supervisord.conf', потому что 'CMD ["/usr/bin/supervisord "]' возьмет этот файл 'conf' при запуске контейнера , – VladoDemcak