45 lines
1.3 KiB
YAML
45 lines
1.3 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
app:
|
|
build: .
|
|
container_name: audio_engine_hub_app
|
|
restart: unless-stopped
|
|
volumes:
|
|
# Mount local app directory for hot-reloading in dev
|
|
- ./app:/home/appuser/app
|
|
# Mount models directory to provide models to the container
|
|
- ./models:/home/appuser/models
|
|
# Mount asset directory to persist generated audio files
|
|
- ./asset:/home/appuser/asset
|
|
command: ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|
|
env_file:
|
|
- .env
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.app-router.rule=Host(`localhost`)"
|
|
- "traefik.http.routers.app-router.entrypoints=web"
|
|
- "traefik.http.services.app-service.loadbalancer.server.port=8000"
|
|
networks:
|
|
- web
|
|
|
|
traefik:
|
|
image: "traefik:v2.10"
|
|
container_name: traefik_proxy
|
|
command:
|
|
- "--api.dashboard=true"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.web.address=:80"
|
|
ports:
|
|
- "80:80" # The HTTP port Traefik listens on
|
|
- "8080:8080" # The Traefik Web UI (Dashboard)
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro" # Traefik needs access to the Docker daemon
|
|
networks:
|
|
- web
|
|
|
|
networks:
|
|
web:
|
|
external: false
|