services: mariadb: image: mariadb:10.6.14 environment: MYSQL_ROOT_PASSWORD: rootpassword volumes: - ./sql/mariadb.cnf:/etc/mysql/mariadb.conf.d/mariadb.cnf - ./sql/seed.sql:/docker-entrypoint-initdb.d/seed.sql ports: - "3306:3306" seaweedfs: image: chrislusf/seaweedfs:4.32 command: server -dir=/data -s3 -s3.port=9000 -s3.config=/etc/seaweedfs/s3.json ports: - "9000:9000" - "8333:8333" - "8888:8888" volumes: - seaweed-data:/data - ./seaweedfs/s3.json:/etc/seaweedfs/s3.json:ro createbuckets: image: chrislusf/seaweedfs:4.32 depends_on: - seaweedfs environment: PAIMON_BUCKET: ${PAIMON_BUCKET} ICEBERG_BUCKET: ${ICEBERG_BUCKET} entrypoint: ["/bin/sh", "/create-buckets.sh"] volumes: - ./seaweedfs/create-buckets.sh:/create-buckets.sh:ro jobmanager: image: flink:${FLINK_VERSION} environment: - JOB_MANAGER_RPC_ADDRESS=jobmanager - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager s3.endpoint: ${S3_ENDPOINT} s3.access-key: ${S3_ACCESS_KEY} s3.secret-key: ${S3_SECRET_KEY} s3.path.style.access: true metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory metrics.reporter.prom.port: 9249 ports: - "8081:8081" command: jobmanager depends_on: - seaweedfs volumes: - ./jars/flink-sql-connector-mysql-cdc-3.6.0-1.20.jar:/opt/flink/lib/flink-sql-connector-mysql-cdc-3.6.0-1.20.jar - ./jars/mysql-connector-j-8.4.0.jar:/opt/flink/lib/mysql-connector-j-8.4.0.jar - ./jars/paimon-flink-1.20-1.2.0.jar:/opt/flink/lib/paimon-flink-1.20-1.2.0.jar - ./jars/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar:/opt/flink/lib/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar - ./jars/flink-s3-fs-hadoop-1.20.4.jar:/opt/flink/plugins/s3-fs-hadoop/flink-s3-fs-hadoop-1.20.4.jar - ./jars/paimon-s3-1.2.0.jar:/opt/flink/lib/paimon-s3-1.2.0.jar - ./jobs:/opt/flink/jobs deploy: replicas: 1 taskmanager: image: flink:${FLINK_VERSION} environment: - JOB_MANAGER_RPC_ADDRESS=jobmanager - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager s3.endpoint: ${S3_ENDPOINT} s3.access-key: ${S3_ACCESS_KEY} s3.secret-key: ${S3_SECRET_KEY} s3.path.style.access: true taskmanager.numberOfTaskSlots: 2 metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory metrics.reporter.prom.port: 9249 depends_on: - jobmanager - seaweedfs command: taskmanager volumes: - ./jars/flink-sql-connector-mysql-cdc-3.6.0-1.20.jar:/opt/flink/lib/flink-sql-connector-mysql-cdc-3.6.0-1.20.jar - ./jars/mysql-connector-j-8.4.0.jar:/opt/flink/lib/mysql-connector-j-8.4.0.jar - ./jars/paimon-flink-1.20-1.2.0.jar:/opt/flink/lib/paimon-flink-1.20-1.2.0.jar - ./jars/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar:/opt/flink/lib/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar - ./jars/flink-s3-fs-hadoop-1.20.4.jar:/opt/flink/plugins/s3-fs-hadoop/flink-s3-fs-hadoop-1.20.4.jar - ./jars/paimon-s3-1.2.0.jar:/opt/flink/lib/paimon-s3-1.2.0.jar deploy: replicas: 2 seatunnel-cluster: build: context: ./seatunnel args: FLINK_VERSION: ${FLINK_VERSION} SEATUNNEL_VERSION: ${SEATUNNEL_VERSION} image: seatunnel:${SEATUNNEL_VERSION} container_name: seatunnel-cluster command: ["/opt/seatunnel/bin/seatunnel-cluster.sh"] ports: - "5801:5801" - "8080:8080" volumes: - ./monitoring/seatunnel/seatunnel.yaml:/opt/seatunnel/config/seatunnel.yaml:ro - ./monitoring/seatunnel/hazelcast.yaml:/opt/seatunnel/config/hazelcast.yaml:ro seatunnel: build: context: ./seatunnel args: FLINK_VERSION: ${FLINK_VERSION} SEATUNNEL_VERSION: ${SEATUNNEL_VERSION} image: seatunnel:${SEATUNNEL_VERSION} container_name: seatunnel profiles: ["seatunnel"] volumes: - ./seatunnel:/config - ./monitoring/seatunnel/hazelcast-client.yaml:/opt/seatunnel/config/hazelcast-client.yaml:ro command: ["/opt/seatunnel/bin/seatunnel.sh", "--config", "/config/seatunnel.conf", "-m", "local"] prometheus: image: prom/prometheus:v3.5.0 ports: - "9090:9090" volumes: - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro depends_on: - jobmanager grafana: image: grafana/grafana:11.5.0 environment: GF_AUTH_ANONYMOUS_ENABLED: "true" GF_AUTH_ANONYMOUS_ORG_ROLE: Admin GF_AUTH_DISABLE_LOGIN_FORM: "true" ports: - "3000:3000" volumes: - ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro - ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro - grafana-data:/var/lib/grafana depends_on: - prometheus volumes: seaweed-data: grafana-data: