
datazip/ingestion本镜像为数据摄入框架的Docker化部署包,旨在提供一个轻量级、可移植的数据采集、转换和加载(ETL)解决方案。通过容器化部署,简化了数据从各类源系统到目标存储的全流程处理,降低了环境依赖和部署复杂度,适用于各类数据集成场景。
适用于需要定期执行数据抽取、转换、加载的场景,替代传统手动或脚本化的ETL流程。
当业务系统数据分散在不同数据源(如MySQL数据库、CSV文件、API接口)时,可通过本镜像实现统一的数据汇聚。
用于系统迁移时的数据全量迁移,或生产环境与测试/分析环境的数据定期同步。
bashdocker pull [镜像仓库地址]/ingestion-framework:latest
通过挂载配置文件和设置环境变量启动容器:
bashdocker run -d \ --name ingestion-framework \ -v /path/to/config:/app/config \ # 挂载配置文件目录 -e SOURCE_TYPE="mysql" \ # 数据源类型 -e SOURCE_CONN="jdbc:mysql://host:port/db" \ # 数据源连接串 -e SOURCE_USER="user" \ # 数据源用户名 -e SOURCE_PASSWORD="password" \ # 数据源密码 -e TARGET_TYPE="postgres" \ # 目标存储类型 -e TARGET_CONN="jdbc:postgresql://host:port/target_db" \ # 目标存储连接串 -e TASK_SCHEDULE="0 0 * * *" \ # 每日凌晨执行(Cron表达式) [镜像仓库地址]/ingestion-framework:latest
推荐通过挂载配置文件(如config.yaml)定义数据摄入流程,示例配置:
yaml# /path/to/config/config.yaml source: type: "mysql" conn: "jdbc:mysql://source-mysql:3306/source_db" user: "source_user" password: "source_pass" table: "source_table" query: "SELECT id, name, create_time FROM source_table WHERE create_time > '{{last_exec_time}}'" # 增量查询 transform: rules: - action: "rename" field: "create_time" new_name: "event_time" - action: "format_date" field: "event_time" format: "yyyy-MM-dd HH:mm:ss" target: type: "postgres" conn: "jdbc:postgresql://target-postgres:5432/target_db" user: "target_user" password: "target_pass" table: "target_table" mode: "upsert" # 插入或更新 primary_key: "id" schedule: cron: "0 */1 * * *" # 每小时执行一次 logging: level: "INFO" file: "/var/log/ingestion/etl.log"
启动容器时挂载配置文件:
bashdocker run -d \ --name ingestion-framework \ -v /path/to/config:/app/config \ [镜像仓库地址]/ingestion-framework:latest
支持通过环境变量覆盖配置文件中的关键参数,常用环境变量:
| 环境变量名 | 描述 | 示例值 |
|---|---|---|
SOURCE_TYPE | 数据源类型 | mysql/postgres/csv/api |
SOURCE_CONN | 数据源连接串 | jdbc:mysql://host:port/db |
SOURCE_USER | 数据源用户名 | user |
SOURCE_PASSWORD | 数据源密码 | pass |
TARGET_TYPE | 目标存储类型 | postgres/***/s3 |
TARGET_CONN | 目标存储连接串 | jdbc:postgresql://host:port/target_db |
TARGET_USER | 目标存储用户名 | target_user |
TARGET_PASSWORD | 目标存储密码 | target_pass |
TASK_SCHEDULE | 任务调度Cron表达式 | 0 0 * * *(每日凌晨) |
LOG_LEVEL | 日志级别 | DEBUG/INFO/WARN/ERROR |
METRICS_ENABLE | 是否开启metrics暴露 | true/false |
METRICS_PORT | metrics暴露端口 | 9090 |
通过docker-compose.yml编排数据摄入服务与依赖组件(如目标数据库):
yamlversion: "3.8" services: ingestion-framework: image: [镜像仓库地址]/ingestion-framework:latest container_name: ingestion-framework volumes: - ./config:/app/config # 挂载本地配置目录 - ./logs:/var/log/ingestion # 挂载日志目录 environment: - LOG_LEVEL=INFO - METRICS_ENABLE=true - METRICS_PORT=9090 depends_on: - target-postgres # 依赖目标数据库 restart: unless-stopped target-postgres: image: postgres:14 container_name: target-postgres environment: - POSTGRES_DB=target_db - POSTGRES_USER=target_user - POSTGRES_PASSWORD=target_pass ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data volumes: postgres-data:
启动服务:
bashdocker-compose up -d
bashdocker logs -f ingestion-framework
bashcurl http://localhost:9090/metrics
JAVA_OPTS环境变量,如-e JAVA_OPTS="-Xmx2g -Xms1g")。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务