使用Docker搭建Nginx+uWSGI+Flask环境
因为非常紧急,所以我制作了它。
环境
操作系统:Windows 11专业版
已安装Docker桌面应用
Flask应用程序
我会确保显示到最低限度。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(debug=True)
Nginx 是一个广泛使用的开源反向代理服务器,用于提供高性能的网站和应用程序服务。
server {
listen 5000;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
}
uWSGI
[uwsgi]
module = app
callable = app
master = true
processes = 1
socket = /tmp/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true
wsgi-file = /app.py
Docker
容器
HOME_PATH = './'
ROOT_PATH = '/var/www/html/'
flask
uwsgi
FROM python:3.11
RUN mkdir -p /var/www/html/
COPY requirements.txt /var/www/html/
COPY uwsgi.ini /var/www/html/
COPY .env /var/www/html/
COPY const.py /var/www/html/
COPY app.py /var/www/html/
COPY /data/ /var/www/html/
WORKDIR /var/www/html/
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install -r requirements.txt
version: '3'
services:
app:
image: python:3.11
build: ${HOME_PATH}
container_name: app
working_dir: ${ROOT_PATH}
volumes:
- ${HOME_PATH}:${ROOT_PATH}
- socket:/tmp
command: uwsgi --ini ${ROOT_PATH}uwsgi.ini
restart: always
tty: true
nginx:
image: nginx:latest
ports:
- "5000:5000"
volumes:
- ${HOME_PATH}web/nginx.conf:/etc/nginx/conf.d/default.conf
- socket:/tmp
volumes:
socket:
组成
這樣大概就是這樣了。
雖然應該要好好區分,但暫時先這樣吧…
app/
├── web/
│ └── nginx.conf
├── .env
├── app.py
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
└── uwsgi.ini
执行
docker compose up --build
大致来说,我正在进行的工作是配置Nginx和uWSGI之间的通信,以确保套接字文件等设置正确。
在Docker启动时,我将执行文件复制到Nginx的公共目录(/var/www/html)中,并执行命令“uwsgi –ini /var/www/html/uwsgi.ini”。
请参考
我已参考您的意见。多谢。
尝试使用Flask + uWSGI + Nginx运行WSGI
在さくら的VPS(CentOS 6.6)上运行Flask + uWSGI + Nginx直到Hello World为止
使用Flask + uwsgi + Nginx执行API