Procházet zdrojové kódy

build(realtime-control): add dedicated Docker image

刘立冬 před 1 týdnem
rodič
revize
b8f7e86a8f

+ 30 - 0
Dockerfile.tencent_realtime_control

@@ -0,0 +1,30 @@
+FROM registry.cn-hangzhou.aliyuncs.com/stuuudy/python:3.13-slim
+
+WORKDIR /app
+
+RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources \
+    && apt-get update \
+    && apt-get install -y --no-install-recommends ca-certificates tzdata \
+    && rm -rf /var/lib/apt/lists/*
+
+COPY examples/tencent_realtime_control/requirements.txt ./requirements.txt
+
+RUN pip install --no-cache-dir \
+    -i https://mirrors.aliyun.com/pypi/simple/ \
+    -r requirements.txt
+
+COPY examples/tencent_realtime_control/*.py ./examples/tencent_realtime_control/
+COPY examples/tencent_realtime_control/schema.sql ./examples/tencent_realtime_control/schema.sql
+
+WORKDIR /app/examples/tencent_realtime_control
+
+RUN mkdir -p outputs
+
+ENV PYTHONUNBUFFERED=1 \
+    TZ=Asia/Shanghai \
+    PYTHONPATH=/app/examples/tencent_realtime_control
+
+HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
+    CMD python -c "from pathlib import Path; raise SystemExit(0 if b'run_scheduler.py' in Path('/proc/1/cmdline').read_bytes() else 1)"
+
+CMD ["python", "run_scheduler.py", "--apply"]

+ 11 - 0
examples/tencent_realtime_control/README.md

@@ -110,6 +110,17 @@ ODPS 小时分区可能延迟。当天尚未出现 `06` 点及之后的分区时
 默认所有执行入口均为 dry-run,必须显式传 `--apply` 才会调用腾讯写接口。
 `--at` 和 `--cpm-override` 只允许 dry-run。
 
+构建独立生产镜像:
+
+```bash
+docker build \
+  -f Dockerfile.tencent_realtime_control \
+  -t tencent-realtime-control:local .
+```
+
+镜像默认命令是 `python run_scheduler.py --apply`。首次上线应先覆盖默认命令执行
+`python run_once.py` 完成 dry-run,确认无误后再启动默认调度命令。
+
 ## 环境变量
 
 参考 `.env.example`。部署必须提供 ODPS、MySQL、腾讯 token 服务和飞书应用

+ 6 - 0
examples/tencent_realtime_control/requirements.txt

@@ -0,0 +1,6 @@
+pandas>=2.0.0
+openpyxl>=3.1.0
+pyodps>=0.11.0
+pymysql>=1.1.0
+python-dotenv>=1.0.0
+requests>=2.31.0