如何在Google Cloud Run上运行类Maven目录结构的Python Flask应用
配置Google Cloud Run部署指定结构Python Flask应用的步骤
1. 编写Dockerfile
针对你的源代码结构,Dockerfile需要正确映射文件路径、安装依赖并配置生产级服务器:
# 基于官方Python轻量镜像构建 FROM python:3.11-slim # 设置容器内工作目录 WORKDIR /app # 复制依赖清单到工作目录 COPY requirements.txt . # 安装Python依赖(禁用缓存减少镜像体积) RUN pip install --no-cache-dir -r requirements.txt # 复制src目录下所有代码到容器工作目录 COPY src/ . # 设置Flask应用入口环境变量 ENV FLASK_APP=app/main.py # 配置启动命令:用gunicorn作为生产服务器,监听Cloud Run分配的PORT端口 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 app.main:app
2. 完善requirements.txt
确保包含Flask和生产服务器依赖:
Flask==2.3.3 gunicorn==21.2.0
3. 本地验证(可选)
先在本地构建镜像运行,确认应用正常:
# 构建本地镜像 docker build -t flask-cloudrun-test . # 启动容器,映射本地8080端口到容器PORT端口 docker run -p 8080:8080 -e PORT=8080 flask-cloudrun-test # 访问http://localhost:8080测试应用是否响应
4. 用gcloud命令部署
确保已安装并初始化gcloud CLI,执行以下命令:
gcloud run deploy flask-cloudrun-service \ --source . \ --region us-central1 \ --allow-unauthenticated
参数说明:
flask-cloudrun-service:自定义的Cloud Run服务名称--source .:指定从当前根目录读取Dockerfile和代码进行构建部署--region:替换为你需要的部署区域(如europe-west1、asia-southeast1)--allow-unauthenticated:允许未授权用户访问,若需私有服务可删除此参数
关键注意事项
- 你的
src/app/main.py必须适配Cloud Run的端口要求,示例代码:
from flask import Flask import os app = Flask(__name__) @app.route('/') def index(): return "Hello from Cloud Run!" if __name__ == '__main__': # 读取Cloud Run分配的PORT环境变量,默认8080 port = int(os.environ.get('PORT', 8080)) app.run(host='0.0.0.0', port=port)
- 部署前确保gcloud账号拥有
Cloud Run Admin和Artifact Registry Admin权限,否则会出现权限报错
内容的提问来源于stack exchange,提问作者St.
相关产品推荐
相关产品推荐

