# eg4-battery — local Docker deployment. # # Usage: # docker compose build # one-time, after changes to Dockerfile / requirements / source # docker compose up -d # start daemon in background # docker compose logs -f # tail the daemon log # docker compose down # stop + remove # # This deployment runs side-by-side with the systemd `eg4-battery.service`. # Stop systemd before bringing this up, or each pack will be polled twice # per cycle (and HA will see duplicate publishes from two MQTT clients): # sudo systemctl stop eg4-battery.service # # Side-by-side cutover, once verified: # sudo systemctl disable --now eg4-battery.service services: eg4-battery: build: . image: eg4-battery:local container_name: eg4-battery restart: unless-stopped # USB-RS-485 adapters → daemon. The /dev/ttyUSBN device numbers can shift # on USB reshuffles; the by-id symlinks (mounted via the volume below) # are the stable identifiers the YAML config references. devices: - /dev/ttyUSB0:/dev/ttyUSB0 - /dev/ttyUSB1:/dev/ttyUSB1 - /dev/ttyUSB3:/dev/ttyUSB3 # Read-only bind: lets the container resolve /dev/serial/by-id/usb-FTDI_* # symlinks (Docker doesn't propagate symlinks via `devices:`). volumes: - /dev/serial:/dev/serial:ro - ${HOME}/.config/eg4-battery:/config:ro # MQTT credentials override the YAML's mqtt: block when set. Comment out # to use the values from eg4-battery.yaml. environment: - MQTT_HOST=10.0.0.41 - MQTT_USERNAME=mqtt - MQTT_PASSWORD=nutterino # Standard log driver — `docker logs` reads from stdout logging: driver: json-file options: max-size: "10m" max-file: "3"