Контейнер Docker и запуск PM2 в экземпляре ec2

0

Вопрос

У меня есть экземпляры ec2, в которых запущено приложение узла. Я подумываю о реализации контейнера с помощью docker. pm2 запускает два приложения, одно из которых является фактическим приложением узла (express и pug), а другое-cronjob, использующим повестку дня. Хорошая ли идея поместить мои приложения в один контейнер?

Я еще не знаком с плюсами и минусами этого, и я читал, что докер уже является менеджером процессов. Как pm2 будет вписываться во все это, как только я его внедрю. Или мне следует просто отказаться от докера и запускать приложения в родном Linux моего ec2.

amazon-ec2 docker node.js pm2
2021-11-23 22:13:26
1

Лучший ответ

2

У вас есть пара вопросов, я постараюсь ответить на них ниже:

1. Хорошая ли идея помещать мои приложения в один контейнер?

Это зависит от того, есть много случаев, когда вы хотели бы запускать один и тот же контейнер, выполняя несколько задач. Но это действительно зависит от использования процессора/оперативной памяти/памяти в задании. И как часто это происходит?

В любом случае, исходя из опыта, я могу сказать, что если бы я запускал cronjob из одного и того же контейнера, я бы всегда использовал для этого рабочий подход, используя либо ядра NodeJS worker_threads или cluster модуль. Потому что вы не хотите, чтобы cronjob влиял на поведение основного потока. У меня есть пример запуска 2 приложений в нескольких потоках в следующем репозитории.

2. должен ли я просто отказаться от докера и запускать приложения в родном Linux моего ec2

Докер и PM2-это 2 действительно разные вещи. Docker в основном предназначен для контейнеризации всего вашего приложения узла, поэтому его гораздо проще отправить. PM2-это менеджер процессов для узла, который следит за тем, чтобы ваше приложение работало и имело несколько хороших показателей, и регистрирует пользовательский интерфейс в показателях PM2. Вы определенно можете использовать 2 вместе, так как PM2 также гарантирует, что ваше приложение запустится после сбоя.

Однако, если вы используете pm2, вам необходимо использовать pm2-время выполнения при использовании docker. Пример Файла настройки:

FROM node:16.9.0

WORKDIR /home/usr/app

COPY . .

RUN npm ci && npm run build

# default command is starting the server
CMD ["npx", "pm2-runtime", "npm", "--", "start"]
2021-11-23 22:58:58

Большое вам спасибо за ответ. Задание cron выполняется только в полночь, поэтому оно не должно влиять на основное приложение. Я изучу pm2-время выполнения, так как я действительно хочу реализовать docker. Я думаю, что следующее, что мне нужно, - это понять, как все это сделать в конвейере сборки, возможно, с помощью Дженкинса.
cam

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................