services: backend: build: context: ./backend dockerfile: Dockerfile container_name: scheduler-backend 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/runtime expose: - "8000" restart: unless-stopped frontend: build: context: ./frontend dockerfile: Dockerfile container_name: scheduler-frontend depends_on: - backend expose: - "80" restart: unless-stopped scheduler-nginx: image: nginx:alpine container_name: scheduler-nginx ports: - "8080:80" # Access via VM-IP:8080 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - backend - frontend restart: unless-stopped volumes: scheduler-db: