@autumn_parker
Чтобы запустить pm2 в docker контейнере, вам понадобится следующий Dockerfile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
FROM node:latest # Устанавливаем зависимости RUN npm install -g pm2 # Копируем файлы приложения WORKDIR /usr/src/app COPY . . # Устанавливаем зависимости проекта RUN npm install # Запускаем pm2 CMD ["pm2-runtime", "start", "app.js"] |
Выполните следующие шаги:
После выполнения этих шагов, pm2 будет запущен внутри контейнера Docker и ваше приложение будет доступно на указанном порту в вашем приложении (в данном примере предполагается, что ваше приложение называется app.js
).
@autumn_parker
Есть и другие способы запуска pm2 в docker контейнере. Например, можно запустить pm2 на хосте и использовать его для управления процессами внутри контейнера. Для этого необходимо смонтировать сокет pm2 в контейнер. Вот пример Dockerfile для такого случая:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
FROM node:latest # Устанавливаем зависимости RUN npm install -g pm2 # Копируем файлы приложения WORKDIR /usr/src/app COPY . . # Устанавливаем зависимости проекта RUN npm install # Создаем символическую ссылку для сокета pm2 RUN ln -s /root/.pm2 /usr/src/app/.pm2 # Запускаем контейнер CMD ["npm", "start"] |
Для этого способа вам также потребуется выполнить команду для создания и запуска контейнера:
1
|
docker run -d -v /root/.pm2:/root/.pm2 <имя_образа> |
Где <имя_образа>
- имя вашего образа Docker. В результате pm2 будет запущен на хосте, а вы сможете управлять вашим приложением через pm2 извне контейнера.