1. 总结问题
我希望 node/express app.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 中,但是当你启用节点时,你会被放在一个子 shell 中并且不能编写任何额外的命令。
3.显示一些代码
scl enable rh-nodejs10 bash
4. 描述预期和实际结果,包括任何错误消息
我希望 node/express 服务器在容器启动时侦听端口 3000。