如何在不同的 Docker 容器中 运行 uWSGI 和 NGINX

How to run uWSGI and NGINX in different Docker containers

我已经在本地设置了 uWSGI 和 NGINX,我的配置在处理网络请求时没有问题。但是,当我将 uWSGI 和 NGINX 容器化(在单独的 Docker 容器中)时,我似乎无法建立连接。我的 NGINX 服务器配置如下所示:

server {
    listen       80;
    server_name  localhost;
    location / {
        include uwsgi_params;
        uwsgi_pass uwsgi.app:9090;
    }
} 

我的 uWSGI ini 文件如下所示:

[uwsgi]
socket = localhost:9090
module = uwsgi:app
processes = 4
threads = 2
master = true
buffer-size = 32768
stats = localhost:9191
die-on-term = true
vaccuum = true

我运行 容器都在同一个用户生成的桥接网络中,使用以下 uWSGI docker run -p 9090:9090 --network main --name uwsgi.app -d uwsgirepodocker run -p 80:80 --network main --link uwsgi.app --name nginx.app -d nginxrepo 用于 NGINX。

当我尝试在本地计算机上发出请求时,我从 NGINX 日志中收到以下错误消息:'[error] 7#7: *1 connect() failed (111: Connection refused) while connecting to上游,客户端:172.18.0.1,服务器:localhost,请求:"GET /endpoint HTTP/1.1",上游:"uwsgi://172.18.0.2:9090",主机:“127.0.0.1”'

它似乎从未连接到 uWSGI。不知道从这里去哪里。有什么想法吗?

配置 uwsgi 监听 0.0.0.0 而不是 localhost。这将使它监听所有容器接口。你得到一个连接被拒绝因为它只监听 uwsgi 容器的本地主机,而不是容器的 eth0。