为什么在 Alpine 上 运行 uWSGI 时 --uid 选项会导致权限被拒绝错误?
Why does --uid option leads to permission denied error when running uWSGI on Alipne?
我在基于 Alpine:3.10 的容器中有一个简单的 Flask 应用程序,我想 运行 它与 uWSGI 一起使用。事情是,当我 运行 它指定 --uid 参数时:
CMD [ "uwsgi", "--socket", "0.0.0.0:80", \
"--uid", "uwsgi", \
"--plugins", "python3", \
"--protocol", "http", \
"--module", "owo.app:app", \
"-p", "4", \
"--enable-threads"]
它记录权限被拒绝错误并以代码 1 退出:
ind(): Permission denied [core/socket.c line 769]
但是如果我评论 --uid 参数,它会警告我我 运行 它是根用户(这很糟糕),但是 运行很好。我究竟做错了什么?
只有 root
可以绑定到小于 1024 的端口。您应该将 uwsgi
命令行更改为 运行,而不是端口 80,例如:
CMD [ "uwsgi", "--socket", "0.0.0.0:8080", \
"--uid", "uwsgi", \
"--plugins", "python3", \
"--protocol", "http", \
"--module", "owo.app:app", \
"-p", "4", \
"--enable-threads"]
您 运行 在容器内的哪个端口并不重要,因为当您 docker run
您的容器 (docker run -p 80:8080 ...
).
我在基于 Alpine:3.10 的容器中有一个简单的 Flask 应用程序,我想 运行 它与 uWSGI 一起使用。事情是,当我 运行 它指定 --uid 参数时:
CMD [ "uwsgi", "--socket", "0.0.0.0:80", \
"--uid", "uwsgi", \
"--plugins", "python3", \
"--protocol", "http", \
"--module", "owo.app:app", \
"-p", "4", \
"--enable-threads"]
它记录权限被拒绝错误并以代码 1 退出:
ind(): Permission denied [core/socket.c line 769]
但是如果我评论 --uid 参数,它会警告我我 运行 它是根用户(这很糟糕),但是 运行很好。我究竟做错了什么?
只有 root
可以绑定到小于 1024 的端口。您应该将 uwsgi
命令行更改为 运行,而不是端口 80,例如:
CMD [ "uwsgi", "--socket", "0.0.0.0:8080", \
"--uid", "uwsgi", \
"--plugins", "python3", \
"--protocol", "http", \
"--module", "owo.app:app", \
"-p", "4", \
"--enable-threads"]
您 运行 在容器内的哪个端口并不重要,因为当您 docker run
您的容器 (docker run -p 80:8080 ...
).