如何在 CentOS7 上自动启动节点/快速应用程序(使用 pm2),并使用软件集合 (scl) 安装节点



1. 总结问题

我想要一个节点/快速应用程序.js在容器启动时侦听端口 3000。

我创建了一个 CentOS 7 Docker 容器,安装了软件集合 (SCL( 存储库,然后安装了节点。

我现在可以使用以下命令启用节点:scl enable rh-nodejs10 bash,所以我做到了,然后安装了 express(全局(和 pm2(全局(,并且可以使用我在命令行上运行的命令成功运行在端口 3000 上侦听的最小 Express 应用程序。

我把scl enable rh-nodejs10 bash放在我的.bash_profile(我创建的名为:www的用户 - 因为我不希望root运行Web服务器(。

事实上,我将在此之后构建一个无根容器(buildah(,因此出于安全考虑,根本没有"root"用户。

现在在容器启动时,我希望让 Web 服务器自动启动,并能够从以下位置获得响应:http://localhost:3000(hello world(。

问题是在容器启动时,在调用 shell 以启用它之前,不会为任何用户启用节点。

2. 提供背景信息,包括您已经尝试过的内容

我在网上搜索了将node,express,pm2与CentOS 7软件集合结合使用的解决方案,但没有找到解决方案。

请仅在您实际尝试过您推荐的解决方案并使其正常工作时才回复,否则它很可能不起作用。

systemd 需要:

1. enable node
2. run pm2 start app

我尝试将两者放在一个 shell 中,但是当您启用 node 时,您将被放入子 shell 中,并且无法编写任何其他命令。

3. 显示一些代码

scl enable rh-nodejs10 bash

4. 描述预期和实际结果,包括任何错误消息

我希望节点/快速服务器在容器启动时侦听端口 3000。

我使用此处找到的 scl-utils/scl_source 技术在 RHEL 7 上重新启动时运行节点

$ cat /etc/profile.d/enablenodejs.sh
#!/bin/bash
source scl_source enable rh-nodejs10

最新更新