Работает NodeJS рабочий в Docker образе - PullRequest
0 голосов
/ 24 марта 2020

У меня есть приложение, которое выглядит так: https://github.com/heroku-examples/node-workers-example

Короче, у меня есть 2 процесса:

  1. Сервер : это сервер US, обрабатывает запросы и добавляет их в Redis
  2. Worker : он получает запросы от Redis и работает с ними

Должен ли я использовать только одно Docker изображение для обоих процессов или у меня должно быть 2 docker изображения (одно для сервера и второе для рабочего)? Какая лучшая практика?

Лично я считаю, что лучше иметь 2 изображения. В этом случае, может ли структура моего проекта быть такой:

Project Folder
-node_modules
-utils
-server.js
-package.json
-Dockerfile
-docker-compose.yml
-/worker
-/worker/index.js
-/worker/Dockerfile

Есть какой-нибудь совет?

Большое спасибо.

1 Ответ

0 голосов
/ 24 марта 2020

Отказ от ответственности: это очень самоуверенный ответ, но автор спрашивает мнение.

Вы можете сделать один или два, но все зависит от того, как вы хотите запланировать это.

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

Следовательно, один для части внешнего интерфейса и один для фонового процесса.

Поскольку у вас есть два разных изображения, я обычно предпочитаю отделить это в двух разных проектах, но это дело вкуса. Хотя из-за того, как NodeJS управляет зависимостями (node_modules), проще иметь две разные папки, когда зависимости сильно различаются.

Я бы go со следующим:

.
├── docker-compose.yml
├── front
│   ├── Dockerfile
│   ├── node_modules
│   ├── package.json
│   └── src
│       └── main.js
└── worker
    ├── Dockerfile
    ├── node_modules
    ├── package.json
    └── src
        └── main.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...