services: frontend: build: context: ./frontend dockerfile: Dockerfile image: ghcr.io/tuanchris/dune-weaver-frontend:main restart: always ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - backend container_name: dune-weaver-frontend backend: build: . image: ghcr.io/tuanchris/dune-weaver:main restart: always ports: - "8080:8080" volumes: # Persistent data directories - ./patterns:/app/patterns - ./playlists:/app/playlists - ./state.json:/app/state.json - ./metadata_cache.json:/app/metadata_cache.json - ./static/custom:/app/static/custom # Mount Docker socket for container self-restart/update - /var/run/docker.sock:/var/run/docker.sock # Mount timezone file from host for scheduling features - /etc/timezone:/etc/host-timezone:ro # Mount systemd for host shutdown capability - /run/systemd/system:/run/systemd/system:ro - /var/run/dbus/system_bus_socket:/var/run/dbus/system_socket:ro - /sys/fs/cgroup:/sys/fs/cgroup:ro # Mount GPIO for DW LEDs and Desert Compass (reed switch) - /sys:/sys # Mount /dev for serial port access (devices may not exist at start time) - /dev:/dev privileged: true container_name: dune-weaver-backend