# Docker + Prefect ## 1. 构建镜像 ```bash cd /Users/idss/YXT_Project/gmv-analytics docker build -t gmv-analytics-prefect:latest . ``` ## 2. 单次执行 ```bash docker run --rm \ --env-file /Users/idss/YXT_Project/gmv-analytics/.env \ -e PROJECT_MAPPING_FILE=/app/店铺映射表.xlsx \ gmv-analytics-prefect:latest \ python prefect_gmv_scheduler.py ``` ## 3. 启动每天 09:00 的 Prefect 调度 这会连接 `.env` 中已经配置的 `PREFECT_API_URL`,并在 Prefect 中启动一个 deployment。 ```bash docker run --rm \ --env-file /Users/idss/YXT_Project/gmv-analytics/.env \ -e PROJECT_MAPPING_FILE=/app/店铺映射表.xlsx \ gmv-analytics-prefect:latest ``` 容器默认执行: ```bash python prefect_gmv_scheduler.py --serve ``` 也可以直接用 Compose: ```bash cd /Users/idss/YXT_Project/gmv-analytics docker compose up -d --build ``` 停止: ```bash docker compose down ``` ## 4. 如果你是用 Prefect worker 跑容器 先保证你的 Prefect worker 已经连到同一个 `PREFECT_API_URL`。 推荐命令示例: ```bash prefect worker start --pool default-agent-pool --type process ``` 如果你后面要改成真正的 Docker work pool,再在 Prefect UI 中把 deployment 的基础设施切到 Docker,并指定镜像: ```text gmv-analytics-prefect:latest ``` ## 5. 常用覆盖参数 单次 dry-run: ```bash docker run --rm \ --env-file /Users/idss/YXT_Project/gmv-analytics/.env \ -e PROJECT_MAPPING_FILE=/app/店铺映射表.xlsx \ gmv-analytics-prefect:latest \ python prefect_gmv_scheduler.py --dry-run ``` 指定时间范围: ```bash docker run --rm \ --env-file /Users/idss/YXT_Project/gmv-analytics/.env \ -e PROJECT_MAPPING_FILE=/app/店铺映射表.xlsx \ gmv-analytics-prefect:latest \ python prefect_gmv_scheduler.py --start-date 2026-03-01 --end-date 2026-03-12 ```