Docker-Nginx未启用自定义配置
我正在尝试使用uWSGI和Nginx作为反向代理部署一个Flask应用程序 它们是通过unix套接字连接的,至少这是个想法 这是我的烧瓶应用程序: app.py: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
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()