services: backend: build: context: ./backend dockerfile: Dockerfile environment: HOST_BROWSE_ROOT: ${HOST_BROWSE_ROOT} HOST_MOUNT_ROOT: /host DB_PATH: /app/data/scheduler.db PYTHONPATH: /app/src JWT_SECRET: ${JWT_SECRET} JWT_EXPIRES_HOURS: ${JWT_EXPIRES_HOURS} JWT_ALGORITHM: ${JWT_ALGORITHM} DEFAULT_ADMIN_USERNAME: ${DEFAULT_ADMIN_USERNAME} DEFAULT_ADMIN_PASSWORD: ${DEFAULT_ADMIN_PASSWORD} DEFAULT_VIEWER_USERNAME: ${DEFAULT_VIEWER_USERNAME} DEFAULT_VIEWER_PASSWORD: ${DEFAULT_VIEWER_PASSWORD} volumes: - ${HOST_BROWSE_ROOT}:/host - scheduler-db:/app/data expose: - "8000" restart: unless-stopped frontend: build: context: ./frontend dockerfile: Dockerfile depends_on: - backend expose: - "80" restart: unless-stopped scheduler-nginx: image: nginx:alpine ports: - "8453:80" # Access via VM-IP:8453 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - backend - frontend restart: unless-stopped volumes: scheduler-db: