假设我有this Dockerfile。
在不添加Web服务器的情况下,以非特权用户身份在端口80上运行它的最佳方法是什么?
我尝试设置了这个:如何在端口80上运行Node.js? 但我没有成功,我认为我不太理解这是如何工作的。
您认为有优雅的解决方案来解决这个问题吗?我有疑虑,但充满希望:)
假设我有this Dockerfile。
在不添加Web服务器的情况下,以非特权用户身份在端口80上运行它的最佳方法是什么?
我尝试设置了这个:如何在端口80上运行Node.js? 但我没有成功,我认为我不太理解这是如何工作的。
您认为有优雅的解决方案来解决这个问题吗?我有疑虑,但充满希望:)
$ docker run --privileged=true ...
RUN setcap cap_net_bind_service=+ep /path/to/node
。但是进程仍然无法在80端口启动。据我所知,这是因为它是在不同的“会话”中设置的。关于端口,你是对的,但它在一个默认使用后端端口80的ssl offloader后面,我当然可以更改它,但我只是想知道如何使它正常工作。也许正确的方法是在前面放一个Web服务器? - Pierre Ozouxsetcap
设置的功能应该是持久的。只是为了确保:您是否在 Dockerfile 中将/path/to/node
替换为 Node.JS 的实际路径? - helmbert/usr/local/bin/node
,这是which node
显示的实际路径。 - Pierre Ozoux