38 lines
1.5 KiB
YAML
38 lines
1.5 KiB
YAML
services:
|
|
seaweedfs:
|
|
image: chrislusf/seaweedfs:latest
|
|
ports:
|
|
- "9333:9333"
|
|
- "8333:8333" # S3 API endpoint for Next.js / Go backend apps
|
|
- "8888:8888"
|
|
volumes:
|
|
- seaweedfs_data:/data
|
|
# Mount your credentials file directly into the container
|
|
- ./s3.json:/data/s3.json
|
|
# -s3.config points to our mounted credentials file
|
|
command: "server -dir=/data -s3 -s3.config=/data/s3.json"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:9333/cluster/status"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
labels:
|
|
- "traefik.enable=true"
|
|
|
|
# 1. Routing Rule: Listen for your Public IP (e.g., 123.45.67.89)
|
|
# If you don't have a static IP, you can use a catch-all rule: "PathPrefix(`/`)"
|
|
- "traefik.http.routers.filer.rule=Host(`fs.marcopedone.it`)"
|
|
- "traefik.http.routers.filer.entrypoints=websecure"
|
|
- "traefik.http.routers.filer.tls.certresolver=letsencrypt"
|
|
|
|
# 2. Assign the Service Port (SeaweedFS filer runs internally on 8888)
|
|
- "traefik.http.services.filer.loadbalancer.server.port=8888"
|
|
|
|
# 3. Attach the Auth Middleware to this Router
|
|
- "traefik.http.routers.filer.middlewares=filer-auth"
|
|
|
|
# 4. Define the Middleware (Paste your generated hashed string here)
|
|
- "traefik.http.middlewares.filer-auth.basicauth.users=admin:$$2a$$12$$2w9VLBATy0eHhU4IAIg8t.bz9/ZSzS9yf5uv4Hn1nUhp28ZY7An8y"
|
|
|
|
volumes:
|
|
seaweedfs_data:
|