0

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。

4

1 回答 1

-1

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

$ cat /etc/profile.d/enablenodejs.sh
#!/bin/bash
source scl_source enable rh-nodejs10
于 2019-10-23T13:30:26.203 回答