Files
system-backu/backend/Dockerfile
T
publ 2568c0380b feat: MySQL SSL 支持 + 任务编辑回显 + InfluxDB 备份
MySQL:
- 新增 use_ssl 选项;MariaDB 11.x 默认强制 SSL 且默认 verify cert,
  故启用 SSL 时同时加 --skip-ssl-verify-server-cert 以兼容自签名证书。

任务编辑回显:
- 后端 JobOut 新增 source_config_safe 字段,解密后敏感字段(password/token/
  secret_key/access_key)脱敏为 "***"。
- 更新端点接收 source_config;若密码字段为 "***" 则保留原值不变,
  支持"不改密码只改其它字段"的常见场景。
- 前端 JobForm 完整回显所有数据源字段,type='edit' 时去掉 disabled。

InfluxDB 备份(新增类型):
- 后端 core/backup/influxdb.py:
  - v2.x:调用 influx CLI(influxdb2-client-2.7.5 二进制直接安装)执行 influx backup
    生成目录后 tar.gz 流式打包上传。
  - v1.x:通过 HTTP API 调用 /query?db=...&q=SELECT * FROM /.*/ 拉取全量数据
    导出为 CSV + META.txt。
- Dockerfile:直接下载 influx CLI 二进制(绕开 apt 签名问题)。
- 前端 JobForm:根据 version 动态显示 v1/v2 表单字段。
- schemas/job.py:新增 InfluxDBSourceConfigV1 / V2。
- 类型字面量扩展:'mysql' | 'directory' | 'influxdb'。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-22 19:14:45 +08:00

45 lines
1.3 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
# 系统依赖:curl 用于健康检查,default-mysql-client 提供 mysqldumptar 已内置,influx CLI 用于 InfluxDB 备份
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
default-mysql-client \
tar \
gzip \
tzdata \
ca-certificates \
gnupg \
&& rm -rf /var/lib/apt/lists/*
# 安装 InfluxDB CLI(直接下载二进制,避免 apt 签名问题)
RUN set -eux; \
INFLUX_VERSION=2.7.5; \
curl -fsSL "https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX_VERSION}-linux-amd64.tar.gz" \
-o /tmp/influx.tar.gz; \
tar -xzf /tmp/influx.tar.gz -C /tmp; \
mv /tmp/influx /usr/local/bin/influx; \
chmod +x /usr/local/bin/influx; \
rm -rf /tmp/influx.tar.gz /tmp/influx; \
influx version
WORKDIR /app
# 先安装依赖以利用 Docker 缓存
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# 数据、日志、备份目录
RUN mkdir -p /app/data/backups /app/logs
EXPOSE 8000
# alembic 升级 + 启动 uvicorn
CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"]