uWSGI 服务器不 运行 带有 & 参数

uWSGI server does not run with & argument

我构建了一个 docker 图像,其中 运行s flask 在 uWSGI 服务器上。我有一个带有配置的 uwsgi.ini 文件。当我使用

CMD ["uwsgi", "--ini", "uwsgi.ini"]

在 Dockerfile 中,一切正常,服务器 运行s,我可以通过浏览器访问我的烧瓶应用程序。唯一的问题是当它处于 运行ning 时我不能使用容器的 bash,因为它被 uWSGI 进程阻塞了。我发现附加一个 & 应该使 uWSGI 运行 在后台。但是,当我使用

CMD ["uwsgi", "--ini", "uwsgi.ini", "&"]

我收到一条错误消息

unable to load configuration from &

我明白了,当我尝试这个时,uWSGI 认为我正在传递另一个它应该处理的参数。但是,我找不到任何方法来告诉它事实并非如此。将 docker run-d 参数一起使用也只会将容器与主机上的当前终端分离,但是当我使用 docker attach 时,我得到一个 bash 我不能做任何事情。

有没有办法明确地告诉 uWSGI 我希望它在后台 运行?我错过了什么吗?

您可以使用 exec 命令在您的容器上执行命令。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
9fb488c77d55        nginx               "/docker-entrypoint.…"   18 minutes ago      Up 18 minutes       80/tcp              distracted_brown

所以这里我有一个 nginx 容器映像 运行ning 在一个名为 distracted_brown 的容器中。所以我可以要求容器 运行 使用 exec 的命令。在这种情况下,我想要 运行 的命令是 shell sh。我还传递了 -it 标志,因此我可以 运行 与 STDIN 和 STDOUT

交互

docker container exec -it distracted_brown sh

这将允许我 shell 访问 nginx 运行 宁作为 PID 1 的容器。作为旁注,您通常不希望 运行 您的 CMD 进程在背景为当 PID 1 关闭时容器将关闭。