Apache SeaTunnel + web 容器化docker部署

使用docker compose部署

compose.yaml配置:

services:
  seatunnel:
    image: apache/seatunnel:2.3.13
    container_name: seatunnel-zeta
    restart: unless-stopped
    entrypoint: >
      /bin/sh -c "
      /opt/seatunnel/bin/seatunnel-cluster.sh
      "
    ports:
      - "8080:8080"
    networks:
      - seatunnel-web-network


  mysql:
    image: mysql:8.0.34
    container_name: seatunnel-web-mysql
    restart: unless-stopped

    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-change_me}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-seatunnel_web}
      MYSQL_USER: ${MYSQL_USER:-seatunnel}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-change_me}
      TZ: Asia/Shanghai

    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --default-time-zone=+08:00

    ports:
      - "${MYSQL_HOST_PORT:-3306}:3306"

    volumes:
      - mysql-data:/var/lib/mysql

    healthcheck:
      test:
        - CMD-SHELL
        - 'MYSQL_PWD="$${MYSQL_ROOT_PASSWORD}" mysqladmin ping -h 127.0.0.1 -uroot --silent'
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s

    networks:
      - seatunnel-web-network


  seatunnel-web-api:
    image: ${SEATUNNEL_WEB_API_IMAGE:-seatunnel-web-api:latest}
    container_name: seatunnel-web-api
    restart: unless-stopped

    build:
      context: .
      dockerfile: Dockerfile
      target: backend-runtime

    depends_on:
      mysql:
        condition: service_healthy

    environment:
      TZ: Asia/Shanghai

      JAVA_OPTS: ${JAVA_OPTS:--Xms512m -Xmx1024m}

      APP_OPTS: ${APP_OPTS:-}

      SERVER_PORT: 9527

      SPRING_PROFILES_ACTIVE: mysql

      SEATUNNEL_WEB_DATABASE_TYPE: mysql
      SEATUNNEL_WEB_DATABASE_HOST: mysql
      SEATUNNEL_WEB_DATABASE_PORT: 3306
      SEATUNNEL_WEB_DATABASE_NAME: ${MYSQL_DATABASE:-seatunnel_web}

      SPRING_DATASOURCE_URL: "jdbc:mysql://mysql:3306/${MYSQL_DATABASE:-seatunnel_web}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true"
      SPRING_DATASOURCE_USERNAME: ${MYSQL_USER:-seatunnel}
      SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD:-change_me}

      SPRING_FLYWAY_ENABLED: "true"

      SEATUNNEL_WEB_DATASOURCE_MASTER_KEY: ${SEATUNNEL_WEB_DATASOURCE_MASTER_KEY:?Please set SEATUNNEL_WEB_DATASOURCE_MASTER_KEY in .env}

    expose:
      - "9527"

    volumes:
      - seatunnel-web-logs:/opt/seatunnel-web/logs
      - seatunnel-web-jdbc-drivers:/opt/seatunnel-web/jdbc-drivers

    healthcheck:
      test:
        - CMD-SHELL
        - 'bash -c "</dev/tcp/127.0.0.1/9527"'
      interval: 10s
      timeout: 5s
      retries: 12
      start_period: 30s

    networks:
      - seatunnel-web-network


  seatunnel-web:
    image: ${SEATUNNEL_WEB_IMAGE:-seatunnel-web:latest}
    container_name: seatunnel-web
    restart: unless-stopped

    build:
      context: .
      dockerfile: Dockerfile
      target: frontend-runtime

    healthcheck:
      disable: true

    depends_on:
      seatunnel-web-api:
        condition: service_healthy

    ports:
      - "${SEATUNNEL_WEB_PORT:-9527}:80"

    networks:
      - seatunnel-web-network


volumes:
  mysql-data:
    name: seatunnel-web-mysql-data

  seatunnel-web-logs:
    name: seatunnel-web-logs

  seatunnel-web-jdbc-drivers:
    name: seatunnel-web-jdbc-drivers


networks:
  seatunnel-web-network:
    name: seatunnel-web-network
    driver: bridge

admin密码

seatunnel-web启动后,系统管理员admin密码若不知知道,可手动登入MySQL终端重置密码,密码使用Bcrypt哈希串,10轮加密

可使用在线工具生成密码Bcrypt哈希串:https://www.xyutil.com/bcrypt/zh

docker exec -it seatunnel-web-mysql bash
mysql -u root -p
mysql> use seatunnel_web;
mysql> UPDATE t_seatunnel_web_user SET user_password = 'Bcrypt哈希串' WHERE user_name = 'admin';

MySQL版本

若操作系统内核版本较低,使用新版本MySQL会报错:Fatal glibc error: CPU does not support x86-64-v2

可使用mysql:8.0.34,此版本能够支持低版本系统

posted @ 2026-07-16 11:51  woncode  阅读(12)  评论(0)    收藏  举报