-
-
Save jhonoryza/3641f8e39322c3f959044b660d41bca2 to your computer and use it in GitHub Desktop.
MinIO docker Swarm Traefik setup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment