version: "3.7"

networks:
  db-networks:
    ipam: # for static IP
      config:
        - subnet: "172.28.128.0/24"

# re-usable extension fields, https://docs.docker.com/compose/compose-file/#extension-fields.
x-node: &default-node
  privileged: true
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: "123456"

services:
  mysql57_master:
    <<: *default-node
    build:
      context: .
      args:
        conf: mysql57_master
        version: 5.7
    command: --default-authentication-plugin=mysql_native_password --log-bin=/var/lib/mysql/mysql-bin --log_slave_updates=ON --server-id=1 --binlog-format=ROW --gtid_mode=ON --enforce-gtid-consistency=true
    container_name: mysql57_master
    hostname: mysql57_master
    networks:
      db-networks:
        ipv4_address: 172.28.128.4

  mysql57_slave:
    <<: *default-node
    build:
      context: .
      args:
        conf: mysql57_slave
        version: 5.7
    command: --default-authentication-plugin=mysql_native_password --log-bin=/var/lib/mysql/mysql-bin --log_slave_updates=ON --server-id=2 --binlog-format=ROW --gtid_mode=ON --enforce-gtid-consistency=true
    container_name: mysql57_slave
    hostname: mysql57_slave
    networks:
      db-networks:
        ipv4_address: 172.28.128.5

  mysql8_master:
    <<: *default-node
    build:
      context: .
      args:
        conf: mysql8_master
        version: 8
    command: --default-authentication-plugin=mysql_native_password --log-bin=/var/lib/mysql/mysql-bin --log_slave_updates=ON --server-id=1 --binlog-format=ROW --gtid_mode=ON --enforce-gtid-consistency=true
    container_name: mysql8_master
    hostname: mysql8_master
    networks:
      db-networks:
        ipv4_address: 172.28.128.6

  mysql8_slave:
    <<: *default-node
    build:
      context: .
      args:
        conf: mysql8_slave
        version: 8
    command: --default-authentication-plugin=mysql_native_password --log-bin=/var/lib/mysql/mysql-bin --log_slave_updates=ON --server-id=2 --binlog-format=ROW --gtid_mode=ON --enforce-gtid-consistency=true
    container_name: mysql8_slave
    hostname: mysql8_slave
    networks:
      db-networks:
        ipv4_address: 172.28.128.7

  tidb: # downstream TiDB
    container_name: tidb
    hostname: tidb
    networks:
      db-networks:
        ipv4_address: 172.28.128.8
    image: pingcap/tidb:latest
    restart: always
