Я смотрю http://progrium.viewdocs.io/dokku/process-management/ и пытаюсь выяснить, как получить несколько сервисов из одного проекта.Dokku multi-process (container) с проектом Dockerfile
У меня есть репо с Dockerfile:
FROM wjdp/flatcar
ADD . app
RUN /app/bin/install.sh
EXPOSE 8000
CMD /app/bin/run.sh
run.sh
запускает однопоточный веб-сервер. Это отлично работает, но я хотел бы запустить несколько сервисов.
Я попытался сделать Procfile
с одной строкой web: /app/bin/run.sh
и удалив линию CMD
из файла Dockerfile. Это не работает без команды, чтобы запустить контейнер Docker не остаться в живых и Докку становится грустно:
remote: Error response from daemon: Cannot kill container ae9d50af17deed4b50bc8327e53ee942bbb3080d3021c49c6604b76b25bb898e: Container ae9d50af17deed4b50bc8327e53ee942bbb3080d3021c49c6604b76b25bb898e is not running
remote: Error: failed to kill containers: [ae9d50af17deed4b50bc8327e53ee942bbb3080d3021c49c6604b76b25bb898e]
Спасибо, я использовал supervisord раньше, и это пришло в голову, но, пытаясь следовать лучшей практике Docker, я стараюсь избегать запуска более одного основного процесса на контейнер. – wjdp
Это, скорее всего, лучший вариант. Пока не придет поддержка докеров. – wjdp
Возможно, я неправильно понял, что вы пытаетесь сделать. Я думал, вы хотите запустить несколько процессов в одном контейнере? Тем не менее, это руководство действительно является «мягкой» лучшей практикой. Это хорошая идея, когда это имеет смысл, но часто это не так, и иногда на самом деле это невозможно сделать. например, у меня было два процесса, которые подключаются к сокетам TCP в другом. Связывание не поддерживает такую циклическую зависимость. Таким образом, выбор заключался в том, чтобы привязать оба сокета к портам хоста или поместить оба процесса в один и тот же контейнер. –