首页
/ Apache SeaTunnel 项目 Docker 部署完全指南

Apache SeaTunnel 项目 Docker 部署完全指南

2026-02-04 05:04:50作者:郁楠烈Hubert

前言

Apache SeaTunnel 是一个高性能、分布式、可扩展的数据集成平台,支持批处理和流式数据处理。本文将详细介绍如何使用 Docker 容器化技术来部署和运行 SeaTunnel 项目,涵盖本地模式和集群模式两种部署方式。

本地模式部署

1. 获取官方镜像

SeaTunnel 提供了官方 Docker 镜像,可以直接从镜像仓库拉取:

docker pull apache/seatunnel:<version_tag>

2. 运行简单任务

拉取镜像后,可以通过以下命令运行示例任务:

# 运行示例配置(假数据源到控制台输出)
docker run --rm -it apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c config/v2.batch.config.template

3. 使用自定义配置文件

如需使用自己的配置文件,可以通过挂载卷的方式:

docker run --rm -it -v /本地配置目录/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c /config/自定义配置文件.conf

4. 调整 JVM 参数

对于大数据量处理,可能需要调整 JVM 内存设置:

docker run --rm -it -v /tmp/job/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -DJvmOption="-Xms4G -Xmx4G" -m local -c /config/fake_to_console.conf

自定义镜像构建

1. 从源码构建

单命令构建方式

cd seatunnel
mvn -B clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dlicense.skipAddThirdParty=true -D"docker.build.skip"=false -D"docker.verify.skip"=false -D"docker.push.skip"=true -D"docker.tag"=2.3.10 -Dmaven.deploy.skip -D"skip.spotless"=true --no-snapshot-updates -Pdocker,seatunnel

分步构建方式

# 1. 构建二进制包
mvn clean package -DskipTests -Dskip.spotless=true

# 2. 构建Docker镜像
cd seatunnel-dist
docker build -f src/main/docker/Dockerfile --build-arg VERSION=2.3.10 -t apache/seatunnel:2.3.10 .

2. 镜像定制说明

SeaTunnel 的 Dockerfile 基于 OpenJDK 8 构建,主要包含以下步骤:

  1. 复制构建好的二进制包到镜像中
  2. 解压并重命名目录
  3. 配置日志系统
  4. 复制 Hazelcast 配置文件

集群模式部署

SeaTunnel 支持使用 Zeta 引擎进行集群化部署,以下是两种集群部署方式:

1. 直接使用 Docker 命令部署

创建网络

docker network create seatunnel-network

启动 Master 节点

docker run -d --name seatunnel_master \
    --network seatunnel-network \
    --rm \
    -p 5801:5801 \
    apache/seatunnel \
    ./bin/seatunnel-cluster.sh -r master

启动 Worker 节点

docker run -d --name seatunnel_worker_1 \
    --network seatunnel-network \
    --rm \
    -e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
    apache/seatunnel \
    ./bin/seatunnel-cluster.sh -r worker

2. 使用 docker-compose 部署

创建 docker-compose.yaml 文件:

version: '3.8'

services:
  master:
    image: apache/seatunnel
    container_name: seatunnel_master
    environment:
      - ST_DOCKER_MEMBER_LIST=172.16.0.2,172.16.0.3,172.16.0.4
    ports:
      - "5801:5801"
    networks:
      seatunnel_network:
        ipv4_address: 172.16.0.2

  worker1:
    image: apache/seatunnel
    container_name: seatunnel_worker_1
    environment:
      - ST_DOCKER_MEMBER_LIST=172.16.0.2,172.16.0.3,172.16.0.4
    depends_on:
      - master
    networks:
      seatunnel_network:
        ipv4_address: 172.16.0.3

networks:
  seatunnel_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.16.0.0/24

启动集群:

docker-compose up -d

集群管理与任务提交

1. 集群扩容

docker-compose.yaml 中添加新的 worker 节点配置后,执行:

docker-compose up -d

2. 提交任务到集群

使用 Docker 容器作为客户端

docker run --name seatunnel_client \
    --network seatunnel-network \
    -e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
    --rm \
    apache/seatunnel \
    ./bin/seatunnel.sh -c config/v2.batch.config.template

查看作业列表

docker run --name seatunnel_client \
    --network seatunnel-network \
    -e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
    --rm \
    apache/seatunnel \
    ./bin/seatunnel.sh -l

最佳实践建议

  1. 资源分配:根据数据量大小合理分配 JVM 内存资源
  2. 配置管理:建议将配置文件通过卷挂载方式管理,便于修改和维护
  3. 日志收集:配置适当的日志收集方案,便于问题排查
  4. 监控:利用 Hazelcast 提供的 REST API 监控集群状态
  5. 版本控制:建议使用特定版本标签而非 latest,确保环境一致性

通过以上方式,您可以轻松地在 Docker 环境中部署和管理 SeaTunnel 项目,无论是进行本地开发测试还是生产环境集群部署。

登录后查看全文
热门项目推荐
相关项目推荐