Как автоматически запустить приложение node/express (с pm2) с установленным узлом с использованием коллекций программного обеспечения (scl) на CentOS7

<сильный>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 при запуске контейнера.


person user10664542    schedule 11.09.2019    source источник


Ответы (1)


У меня есть узел, работающий при перезагрузке на RHEL 7 с использованием метода scl-utils/scl_source, найденного здесь

$ cat /etc/profile.d/enablenodejs.sh
#!/bin/bash
source scl_source enable rh-nodejs10
person thebasa    schedule 23.10.2019
comment
Пожалуйста, не редактируйте свой пост, чтобы просто включить ответ из другого вопроса StackOverflow. Если это решение сработало для вас, просто проголосуйте за него, чтобы сделать его более заметным для других. Не надо копипастить сюда. - person Das_Geek; 23.10.2019
comment
Это не вырезано и не вставлено. Этот пост имеет отношение к python. И голосование за это не поможет этому парню получить ответ, который он хочет. Есть ли другой способ связать там? Если да, то мне этого не хватает. И я каждый день вижу посты здесь, например, связанные с: ‹ссылка›... - person thebasa; 24.10.2019