<сильный>1. Кратко опишите проблему
Я хотел бы, чтобы node/express app.js прослушивал порт 3000 при запуске контейнера.
Я создал контейнер CentOS 7 Docker, установил репозиторий наборов программного обеспечения (SCL), а затем установил node.
Теперь я могу включить node с помощью: scl enable rh-nodejs10 bash
, что я и сделал, а затем установил экспресс (глобально) и pm2 (глобально) и могу успешно запустить минимальное экспресс-приложение, прослушивающее порт 3000 с командами, которые я запускаю в командной строке.
Я поместил scl enable rh-nodejs10 bash
в свой .bash_profile (пользователя, которого я создал с именем: www
- потому что я не хочу, чтобы root запускал веб-сервер).
На самом деле, я буду создавать контейнер без рута (buildah), следующий после этого, поэтому из соображений безопасности вообще не будет пользователя root.
Теперь при запуске контейнера я хочу, чтобы веб-сервер запускался автоматически и мог получать ответ от: http://localhost:3000 (привет, мир).
Проблема в том, что при запуске контейнера узел не включается ни для одного пользователя, пока не будет вызвана оболочка для его включения.
<сильный>2. Расскажите о том, что вы уже пробовали
Я искал в Интернете решение для использования node, express, pm2 в сочетании с коллекциями программного обеспечения CentOS 7 и не нашел решения.
Пожалуйста, отвечайте только в том случае, если вы действительно пробовали решение, которое рекомендуете, и оно работает, в противном случае оно, скорее всего, не сработает.
systemd необходимо:
1. enable node
2. run pm2 start app
Я пытался поместить оба в оболочку, но когда вы включаете узел, вы попадаете в подоболочку и не можете создавать какие-либо дополнительные команды.
<сильный>3. покажи код
scl enable rh-nodejs10 bash
<сильный>4. Опишите ожидаемые и фактические результаты, включая любые сообщения об ошибках
Я ожидаю, что узел/экспресс-сервер будет прослушивать порт 3000 при запуске контейнера.