The french 6 layers variant wasn't included because it's not good enough yet. Use the `french_24l` variant for now.
89 lines
3.3 KiB
YAML
89 lines
3.3 KiB
YAML
services:
|
|
traefik:
|
|
image: traefik:v3.6.7
|
|
command:
|
|
# Swarm provider configuration
|
|
- "--providers.swarm.endpoint=unix:///var/run/docker.sock"
|
|
- "--providers.swarm.exposedByDefault=false"
|
|
|
|
# EntryPoints for HTTP and HTTPS
|
|
- "--entrypoints.web.address=:80"
|
|
- "--entrypoints.websecure.address=:443"
|
|
|
|
# Redirect HTTP to HTTPS
|
|
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
|
|
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
|
|
|
|
# Let's Encrypt configuration
|
|
- "--certificatesResolvers.letsencrypt.acme.httpChallenge.entryPoint=web"
|
|
- "--certificatesResolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
|
|
- "--certificatesResolvers.letsencrypt.acme.email=gabriel@kyutai.org"
|
|
- "--certificatesResolvers.letsencrypt.acme.httpChallenge=true"
|
|
- "--log.level=TRACE"
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
- letsencrypt:/letsencrypt
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
|
|
backend-english:
|
|
image: rg.fr-par.scw.cloud/namespace-unruffled-tereshkova/pocket-tts-server-english:${COMMIT_SHA}
|
|
build:
|
|
context: .
|
|
volumes:
|
|
- hf-cache:/root/.cache/huggingface
|
|
deploy:
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.server-english.rule=Host(`pocket-tts-api.kyutai.org`) && PathPrefix(`/english`)"
|
|
- "traefik.http.routers.server-english.middlewares=strip-api-english"
|
|
- "traefik.http.middlewares.strip-api-english.replacepathregex.regex=^/english/(.*)"
|
|
- "traefik.http.middlewares.strip-api-english.replacepathregex.replacement=/$$1"
|
|
- "traefik.http.routers.server-english.entrypoints=websecure"
|
|
- "traefik.http.routers.server-english.tls=true"
|
|
- "traefik.http.routers.server-english.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.server-english.loadbalancer.server.port=80"
|
|
- "traefik.http.routers.server-english.priority=100"
|
|
|
|
backend-german:
|
|
image: rg.fr-par.scw.cloud/namespace-unruffled-tereshkova/pocket-tts-server-german:${COMMIT_SHA}
|
|
build:
|
|
context: .
|
|
volumes:
|
|
- hf-cache:/root/.cache/huggingface
|
|
deploy:
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.server-german.rule=Host(`pocket-tts-api.kyutai.org`) && PathPrefix(`/german`)"
|
|
- "traefik.http.routers.server-german.middlewares=strip-api-german"
|
|
- "traefik.http.middlewares.strip-api-german.replacepathregex.regex=^/german/(.*)"
|
|
- "traefik.http.middlewares.strip-api-german.replacepathregex.replacement=/$$1"
|
|
- "traefik.http.routers.server-german.entrypoints=websecure"
|
|
- "traefik.http.routers.server-german.tls=true"
|
|
- "traefik.http.routers.server-german.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.server-german.loadbalancer.server.port=80"
|
|
- "traefik.http.routers.server-german.priority=100"
|
|
|
|
|
|
volumes:
|
|
letsencrypt:
|
|
portainer_data:
|
|
prometheus-data:
|
|
grafana-data:
|
|
|
|
networks:
|
|
agent_network:
|
|
driver: overlay
|
|
attachable: true
|
|
driver_opts:
|
|
encrypted: "true"
|
|
default:
|
|
driver: overlay
|
|
attachable: true
|
|
driver_opts:
|
|
encrypted: "true" |