version: '3.8' services: backend-api: build: context: ./packages/backend-api dockerfile: Dockerfile env_file: - ./packages/backend-api/.env.production environment: - REDIS_URL=redis://redis:6379 restart: unless-stopped networks: - webnet expose: - "4000" healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:4000/health || exit 1"] interval: 10s timeout: 5s retries: 5 studio-panel: build: context: . dockerfile: ./packages/studio-panel/Dockerfile.simple environment: - VITE_TOKEN_SERVER_URL=http://backend-api:4000 - VITE_STUDIO_URL=https://avanzacast-studio.bfzqqk.easypanel.host - VITE_BROADCASTPANEL_URL=https://avanzacast-broadcastpanel.bfzqqk.easypanel.host restart: unless-stopped networks: - webnet expose: - "80" volumes: - ./docker/letsencrypt:/etc/letsencrypt:ro broadcast-panel: build: context: ./packages/broadcast-panel dockerfile: Dockerfile environment: - VITE_TOKEN_SERVER_URL=http://backend-api:4000 - VITE_BROADCASTPANEL_URL=https://avanzacast-broadcastpanel.bfzqqk.easypanel.host restart: unless-stopped networks: - webnet expose: - "5175" volumes: - ./docker/letsencrypt:/etc/letsencrypt:ro redis: image: redis:7-alpine restart: unless-stopped networks: - webnet expose: - "6379" reverse-proxy: image: nginx:stable-alpine volumes: - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - ./docker/letsencrypt:/etc/letsencrypt:ro ports: - "80:80" - "443:443" depends_on: - backend-api - studio-panel - broadcast-panel networks: - webnet restart: unless-stopped networks: webnet: driver: bridge