为DDEV-Drupal项目添加Flask-WSGI路由的实现方案咨询
在DDEV-Drupal项目中集成Flask应用(支持Gunicorn)
步骤1:添加Flask服务到DDEV配置
在项目根目录创建.ddev/docker-compose.flask.yaml,添加适配DDEV环境的Flask服务配置:
version: '3.6' services: flask: build: ./flask-app container_name: ddev-${DDEV_SITENAME}-flask restart: unless-stopped expose: - "5000" environment: - FLASK_APP=app.py - FLASK_ENV=development # 生产环境改为production - DDEV_SITENAME=${DDEV_SITENAME} volumes: - ./flask-app:/app networks: - ddev_default
步骤2:搭建Flask应用基础结构
在项目根目录新建flask-app文件夹,包含以下核心文件:
Dockerfile
FROM python:3.11-slim WORKDIR /app # 安装依赖 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 开发环境用flask run,生产环境替换为gunicorn CMD ["flask", "run", "--host=0.0.0.0"] # 生产环境替换为:CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
requirements.txt
Flask==2.3.3 gunicorn==21.2.0 # 使用Gunicorn时需保留
app.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello from Flask in DDEV!" if __name__ == '__main__': app.run(host='0.0.0.0')
步骤3:配置DDEV端口转发
编辑.ddev/config.yaml,添加端口转发规则,让主机5000端口映射到Flask容器:
# 保留原有配置,新增以下内容 additional_exposed_ports: - "5000:5000"
步骤4:启动并验证服务
- 启动DDEV:
ddev start - 访问
http://myproject.ddev.site:5000,可看到Flask返回的测试内容
生产环境切换到Gunicorn
- 修改
flask-app/Dockerfile的启动命令为:CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "4", "app:app"] - 确保
requirements.txt包含gunicorn依赖 - 重启服务:
ddev restart flask
额外说明
- Flask容器与Drupal服务处于同一
ddev_default网络,可直接通过db:3306访问Drupal数据库 - 开发环境下
FLASK_ENV=development会自动重载代码,生产环境建议关闭该配置
内容的提问来源于stack exchange,提问作者dotist
相关产品推荐
相关产品推荐

