Skip to content

Instantly share code, notes, and snippets.

@a1994sc
Created July 19, 2021 17:42
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save a1994sc/9a03d4470907746d774809cf5370fdf0 to your computer and use it in GitHub Desktop.
Save a1994sc/9a03d4470907746d774809cf5370fdf0 to your computer and use it in GitHub Desktop.
MinIO docker Swarm Traefik setup
version: '3.7'
services:
minio1:
image: minio/minio:latest
hostname: minio1
volumes:
- /mnt/drive/minio:/export
networks:
- proxy
deploy:
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
# MINIO console
- "traefik.http.routers.minio.tls=true"
- "traefik.http.routers.minio.rule=Host(`minio.example.com`)"
- "traefik.http.routers.minio.service=minio-s"
- "traefik.http.services.minio-s.loadbalancer.server.port=41213"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.secure=true"
# MINIO api
- "traefik.http.routers.cdn.tls=true"
- "traefik.http.routers.cdn.rule=Host(`s3.example.com`)"
- "traefik.http.routers.cdn.service=cdn-s"
- "traefik.http.services.cdn-s.loadbalancer.server.port=9000"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.secure=true"
restart_policy:
delay: 10s
max_attempts: 5
window: 60s
placement:
constraints:
- node.labels.minio==1
command: server http://minio{1...4}/export --console-address 0.0.0.0:41213
secrets:
- secret_key
- access_key
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio2:
image: minio/minio:latest
hostname: minio2
volumes:
- /mnt/drive/minio:/export
networks:
- proxy
deploy:
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
# MINIO console
- "traefik.http.routers.minio.tls=true"
- "traefik.http.routers.minio.rule=Host(`minio.example.com`)"
- "traefik.http.routers.minio.service=minio-s"
- "traefik.http.services.minio-s.loadbalancer.server.port=41213"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.secure=true"
# MINIO api
- "traefik.http.routers.cdn.tls=true"
- "traefik.http.routers.cdn.rule=Host(`s3.example.com`)"
- "traefik.http.routers.cdn.service=cdn-s"
- "traefik.http.services.cdn-s.loadbalancer.server.port=9000"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.secure=true"
restart_policy:
delay: 10s
max_attempts: 5
window: 60s
placement:
constraints:
- node.labels.minio==2
command: server http://minio{1...4}/export --console-address 0.0.0.0:41213
secrets:
- secret_key
- access_key
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio3:
image: minio/minio:latest
hostname: minio3
volumes:
- /mnt/drive/minio:/export
networks:
- proxy
deploy:
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
# MINIO console
- "traefik.http.routers.minio.tls=true"
- "traefik.http.routers.minio.rule=Host(`minio.example.com`)"
- "traefik.http.routers.minio.service=minio-s"
- "traefik.http.services.minio-s.loadbalancer.server.port=41213"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.secure=true"
# MINIO api
- "traefik.http.routers.cdn.tls=true"
- "traefik.http.routers.cdn.rule=Host(`s3.example.com`)"
- "traefik.http.routers.cdn.service=cdn-s"
- "traefik.http.services.cdn-s.loadbalancer.server.port=9000"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.secure=true"
restart_policy:
delay: 10s
max_attempts: 5
window: 60s
placement:
constraints:
- node.labels.minio==3
command: server http://minio{1...4}/export --console-address 0.0.0.0:41213
secrets:
- secret_key
- access_key
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
minio4:
image: minio/minio:latest
hostname: minio4
volumes:
- /mnt/drive/minio:/export
networks:
- proxy
deploy:
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
# MINIO console
- "traefik.http.routers.minio.tls=true"
- "traefik.http.routers.minio.rule=Host(`minio.example.com`)"
- "traefik.http.routers.minio.service=minio-s"
- "traefik.http.services.minio-s.loadbalancer.server.port=41213"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.minio-s.loadbalancer.sticky.cookie.secure=true"
# MINIO api
- "traefik.http.routers.cdn.tls=true"
- "traefik.http.routers.cdn.rule=Host(`s3.example.com`)"
- "traefik.http.routers.cdn.service=cdn-s"
- "traefik.http.services.cdn-s.loadbalancer.server.port=9000"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.name=stickycookie"
- "traefik.http.services.cdn-s.loadbalancer.sticky.cookie.secure=true"
restart_policy:
delay: 10s
max_attempts: 5
window: 60s
placement:
constraints:
- node.labels.minio==4
command: server http://minio{1...4}/export --console-address 0.0.0.0:41213
secrets:
- secret_key
- access_key
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
networks:
proxy:
external: true
secrets:
secret_key:
external: true
access_key:
external: true
@aliml92
Copy link

aliml92 commented Nov 1, 2021

Hello @a1994sc, could you please share compose file for traefik too ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment