services: dune-weaver: build: . image: ghcr.io/tuanchris/dune-weaver:main restart: always ports: - "80:80" # Frontend (nginx) - "8080:8080" # Backend API volumes: # Persist state and patterns - ./state.json:/app/state.json - ./patterns:/app/patterns # 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_bus_socket:ro - /sys/fs/cgroup:/sys/fs/cgroup:ro # Mount GPIO for DW LEDs and Desert Compass (reed switch) - /sys:/sys devices: - "/dev/ttyACM0:/dev/ttyACM0" # Serial device for stepper motors - "/dev/ttyUSB0:/dev/ttyUSB0" # Alternative serial device - "/dev/ttyAMA0:/dev/ttyAMA0" # Alternative serial device - "/dev/gpiomem:/dev/gpiomem" # GPIO memory access for DW LEDs - "/dev/mem:/dev/mem" # Direct memory access for PWM - "/dev/pio0:/dev/pio0" # PIO device for Pi 5 NeoPixel support privileged: true # Required for GPIO/PWM access container_name: dune-weaver