【发布时间】:2015-09-28 02:54:22
【问题描述】:
假设我有this Dockerfile。
在端口 80 上以非特权用户身份运行它的最佳方式是什么? (前面没有添加网络服务器)?
我试图设置这个:How do I run Node.js on port 80? 但我并不走运,我想我并不深入了解它是如何工作的。
你认为有一个优雅的解决方案来解决这个问题吗?我很怀疑,但充满希望:)
【问题讨论】:
-
使用功能时究竟有什么问题?否则,有什么反对让 Node.js 监听端口 3000,然后使用“-p 80:3000”标志将该端口映射到主机上的端口 80?
-
我添加了一行
RUN setcap cap_net_bind_service=+ep /path/to/node作为 root。该过程仍然无法在端口 80 上启动。据我了解,这是因为它是在不同的“会话”期间设置的。关于端口,您是对的,但它位于 ssl 卸载程序的后面,默认情况下使用端口 80 上的后端,我当然可以更改它,但我只是想知道如何让它以正确的方式工作。也许正确的方法是在前面有一个网络服务器? -
通常,使用
setcap设置的功能应该是持久的。只是为了确定:您是否将/path/to/node替换为 Dockerfile 中 Node.JS 的 实际 路径? -
是的,我使用了
/usr/local/bin/node,这是which node显示的实际路径。