2016-07-27 4 views
6

У меня есть три экспресс-сервера, написанные на узлах. Эти серверы обслуживают разные цели и, следовательно, работают на разных портах.Запуск нескольких серверов с изображения докеров

Например: app1.js на 8000, app2.js на 5000 и app3.js на 5432.

Я хочу создать Docker изображение, используя файл Докер и запустить все эти серверы. Можем ли мы это сделать? Если да, то как мы можем это сделать? По моим сведениям, мы можем запускать только одну команду из файла докеров.

ответ

5

Возможно, вы захотите изучить Docker Compose.

Каждый сервер будет иметь свой файл Dockerfile, а ваш файл docker-compose.yml будет определять порты, которые они раскрывают и как они взаимодействуют.

3

Предлагаемый механизм Ethan корректен для запуска сразу нескольких контейнеров докеров, но не объясняет почему.

Чтобы пояснить немного, каждый контейнер докеров может порождать несколько процессов (серверов), но для контейнера докеров необходим один из процессов на переднем плане, а докер - жизненный цикл контейнера, как правило, отражает жизненный цикл процесса переднего плана.

При использовании всех процессов в одном контейнере докера будет потеряно много преимуществ докетирования. И поэтому рекомендуется иметь один контейнер докера на каждый процесс.

+0

Спасибо за разъяснение, что. –

0

Возможно, вы захотите проверить phusion passenger nodejs image. Вы можете настроить его для запуска единого сервера, обслуживающего данные из нескольких процессов nodejs.

2

Хотя это не «рекомендуется», вы можете это сделать. Это даже задокументировано.

Docker and Supervisord

Или вы можете использовать Runit

В последнее время я использую s6

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