Docker-Nginx未启用自定义配置

Docker-Nginx未启用自定义配置,docker,nginx,flask,uwsgi,Docker,Nginx,Flask,Uwsgi,我正在尝试使用uWSGI和Nginx作为反向代理部署一个Flask应用程序 它们是通过unix套接字连接的,至少这是个想法 这是我的烧瓶应用程序: app.py: from flask import Flask def create_app(): app = Flask(__name__) @app.route("/") def root(): return "Hello, world!" return app 这是我的Dockerfile

我正在尝试使用uWSGI和Nginx作为反向代理部署一个Flask应用程序

它们是通过unix套接字连接的,至少这是个想法

这是我的烧瓶应用程序:

app.py:

from flask import Flask

def create_app():
    app = Flask(__name__)

    @app.route("/")
    def root():
        return "Hello, world!"

    return app
这是我的Dockerfile:

FROM nginx-python

WORKDIR /app
COPY ./app .
RUN pip3 install -r requirements.txt

COPY ./demoapp.conf /etc/nginx/conf.d/demoapp.conf

EXPOSE 9090

CMD uwsgi --ini demoapp.ini
nginx-python是我创建的一个自定义图像,它显然已经准备好了nginx和python

这是我的uWSGI demoapp.ini:

[uwsgi]
module = app:create_app()

master = true
processes = 2

socket = demoapp.sock
chmod-socket = 666
vacuum = true

die-on-term = true
最后,这是我的Nginx配置:

server {
    listen 9090;
    server_name localhost;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/app/demoapp.sock
    }
}
这就是我运行图像的方式:

$docker容器运行-it-P7777:9090-P6666:80演示应用程序

如您所见,我正在映射两个端口。 7777应该重定向到9090,这是Nginx通过unix套接字与uWSGI通信时使用的

以及6666到80,这是Nginx的默认服务器—加载Nginx欢迎页面的服务器

我为什么要提这个?因为当我导航到:

上面说这个页面无法访问

但当我导航到:

它将Nginx欢迎页面呈现得非常好

作为旁注,我知道我可以使用Docker Compose将Flask应用程序分离到自己的容器中,将Nginx分离到另一个容器中

我这样做只是一种自我分配的练习。

在demoapp.ini中

与nginx配置中的路径不匹配。我总是在项目中使用完整的路径,并将.sock文件放在/tmp中/

你也在做一些我以前没见过的事情,所以如果修复上面的问题不起作用,试着改变

[uwsgi]
module = app:create_app()

app = create_app()
到app.py的底部

[uwsgi]
module = app:app
app = create_app()