version: "2.3"
services:
  server-master-0:
    image: dataflow:test
    container_name: server-master-0
    ports:
      - "10245:10240"
    volumes:
      - ./config/master.toml:/config.toml
      - /tmp/tiflow_engine_test:/log
    command:
      - "/tiflow"
      - "master"
      - "--name=server-master-0"
      - "--addr=0.0.0.0:10240"
      - "--advertise-addr=server-master-0:10240"
      - "--config=/config.toml"
      - "--log-file=/log/server-master-0.log"
    depends_on:
      "etcd-standalone":
        condition: service_started
      "mysql-standalone":
        condition: service_healthy
    restart: unless-stopped

  server-master-1:
    image: dataflow:test
    container_name: server-master-1
    ports:
      - "10246:10240"
    volumes:
      - ./config/master.toml:/config.toml
      - /tmp/tiflow_engine_test:/log
    command:
      - "/tiflow"
      - "master"
      - "--name=server-master-1"
      - "--addr=0.0.0.0:10240"
      - "--advertise-addr=server-master-1:10240"
      - "--config=/config.toml"
      - "--log-file=/log/server-master-1.log"
    depends_on:
      "etcd-standalone":
        condition: service_started
      "mysql-standalone":
        condition: service_healthy
    restart: unless-stopped

  server-master-2:
    image: dataflow:test
    container_name: server-master-2
    ports:
      - "10247:10240"
    volumes:
      - ./config/master.toml:/config.toml
      - /tmp/tiflow_engine_test:/log
    command:
      - "/tiflow"
      - "master"
      - "--name=server-master-2"
      - "--addr=0.0.0.0:10240"
      - "--advertise-addr=server-master-2:10240"
      - "--config=/config.toml"
      - "--log-file=/log/server-master-2.log"
    depends_on:
      "etcd-standalone":
        condition: service_started
      "mysql-standalone":
        condition: service_healthy
    restart: unless-stopped

  server-executor-0:
    image: dataflow:test
    container_name: server-executor-0
    ports:
      - "11241:10241"
    volumes:
      - ./config/executor.toml:/config.toml
      - /tmp/tiflow_engine_test:/log
    command:
      - "/tiflow"
      - "executor"
      - "--name=server-executor-0"
      - "--addr=0.0.0.0:10241"
      - "--advertise-addr=server-executor-0:10241"
      - "--join=server-master-0:10240,server-master-1:10240,server-master-2:10240"
      - "--config=/config.toml"
      - "--log-file=/log/server-executor-0.log"
      - "--labels=\"name=exec-0\""
    depends_on:
      - "server-master-0"
      - "server-master-2"
      - "server-master-1"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

  server-executor-1:
    image: dataflow:test
    container_name: server-executor-1
    ports:
      - "11242:10241"
    volumes:
      - ./config/executor.toml:/config.toml
      - /tmp/tiflow_engine_test:/log
    command:
      - "/tiflow"
      - "executor"
      - "--name=server-executor-1"
      - "--addr=0.0.0.0:10241"
      - "--advertise-addr=server-executor-1:10241"
      - "--join=server-master-0:10240,server-master-1:10240,server-master-2:10240"
      - "--config=/config.toml"
      - "--log-file=/log/server-executor-1.log"
      - "--labels=\"name=exec-1\""
    depends_on:
      - "server-master-0"
      - "server-master-2"
      - "server-master-1"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

  server-executor-2:
    image: dataflow:test
    container_name: server-executor-2
    ports:
      - "11243:10241"
    volumes:
      - ./config/executor.toml:/config.toml
      - /tmp/tiflow_engine_test:/log
    command:
      - "/tiflow"
      - "executor"
      - "--name=server-executor-2"
      - "--addr=0.0.0.0:10241"
      - "--advertise-addr=server-executor-2:10241"
      - "--join=server-master-0:10240,server-master-1:10240,server-master-2:10240"
      - "--config=/config.toml"
      - "--log-file=/log/server-executor-2.log"
      - "--labels=\"name=exec-2\""
    depends_on:
      - "server-master-0"
      - "server-master-2"
      - "server-master-1"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

  etcd-standalone:
    image: quay.io/coreos/etcd
    container_name: etcd-standalone
    command:
      - "etcd"
      - "--listen-client-urls=http://0.0.0.0:2379"
      - "--advertise-client-urls=http://etcd-standalone:2379"
    ports:
      - "12479:2379"

  mysql-standalone:
    image: mysql:8.0
    container_name: mysql-standalone
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    volumes:
      - './config/mysql_meta.cnf:/etc/my.cnf'
    ports:
      - "3336:3306"
    healthcheck:
      test: mysql -h127.0.0.1 -P3306 -e "show databases"
      interval: 10s
      timeout: 600s
      retries: 60
