services: # --- Backend Service --- backend: build: context: ./backend container_name: holy-backend restart: unless-stopped networks: - narl - internal extra_hosts: - "host.docker.internal:host-gateway" env_file: - .env volumes: - ./backend:/app - ./legacy:/app/legacy environment: - PYTHONUNBUFFERED=1 labels: - "traefik.enable=true" - "traefik.docker.network=narl" - "traefik.http.routers.holy-energy-backend.priority=100" - "traefik.http.routers.holy-energy-backend.rule=Host(`holy.narl.io`) && (PathPrefix(`/api`) || PathPrefix(`/admin`) || PathPrefix(`/static`) || PathPrefix(`/media`))" - "traefik.http.routers.holy-energy-backend.entrypoints=websecure" - "traefik.http.routers.holy-energy-backend.tls.certresolver=https_resolver" - "traefik.http.services.holy-energy-backend.loadbalancer.server.port=8000" # --- Frontend Service --- frontend: build: context: ./frontend args: - VITE_API_URL=https://holy.narl.io/api/ - VITE_IMPRESSUM_NAME=${VITE_IMPRESSUM_NAME} - VITE_IMPRESSUM_STREET=${VITE_IMPRESSUM_STREET} - VITE_IMPRESSUM_CITY=${VITE_IMPRESSUM_CITY} - VITE_IMPRESSUM_EMAIL=${VITE_IMPRESSUM_EMAIL} - VITE_IMPRESSUM_PHONE=${VITE_IMPRESSUM_PHONE} container_name: holy-frontend restart: unless-stopped networks: - narl extra_hosts: - "host.docker.internal:host-gateway" env_file: - .env depends_on: - backend labels: - "traefik.enable=true" - "traefik.docker.network=narl" - "traefik.http.routers.holy-energy-frontend.priority=10" - "traefik.http.routers.holy-energy-frontend.rule=Host(`holy.narl.io`)" - "traefik.http.routers.holy-energy-frontend.entrypoints=websecure" - "traefik.http.routers.holy-energy-frontend.tls.certresolver=https_resolver" - "traefik.http.services.holy-energy-frontend.loadbalancer.server.port=80" networks: narl: external: true internal: internal: true volumes: db_data: