version: '3.7'

# Settings and configurations that are common for all containers
x-minio-common: &minio-common
  image: quay.io/minio/minio:${RELEASE}
  command: server http://site1-minio{1...4}/data{1...2}
  environment:
    - MINIO_PROMETHEUS_AUTH_TYPE=public
    - CI=true

# starts 4 docker containers running minio server instances.
# using nginx reverse proxy, load balancing, you can access
# it through port 9000.
services:
  site1-minio1:
    <<: *minio-common
    hostname: site1-minio1
    volumes:
      - site1-data1-1:/data1
      - site1-data1-2:/data2

  site1-minio2:
    <<: *minio-common
    hostname: site1-minio2
    volumes:
      - site1-data2-1:/data1
      - site1-data2-2:/data2

  site1-minio3:
    <<: *minio-common
    hostname: site1-minio3
    volumes:
      - site1-data3-1:/data1
      - site1-data3-2:/data2

  site1-minio4:
    <<: *minio-common
    hostname: site1-minio4
    volumes:
      - site1-data4-1:/data1
      - site1-data4-2:/data2

  site1-nginx:
    image: nginx:1.19.2-alpine
    hostname: site1-nginx
    volumes:
      - ./nginx-site1.conf:/etc/nginx/nginx.conf:ro
    ports:
      - "9001:9001"
    depends_on:
      - site1-minio1
      - site1-minio2
      - site1-minio3
      - site1-minio4

## By default this config uses default local driver,
## For custom volumes replace with volume driver configuration.
volumes:
  site1-data1-1:
  site1-data1-2:
  site1-data2-1:
  site1-data2-2:
  site1-data3-1:
  site1-data3-2:
  site1-data4-1:
  site1-data4-2: