version: '3.8' services: backend: build: context: ./backend dockerfile: Dockerfile volumes: - ./backend/app:/app/app - ./data:/app/data environment: - DATABASE_URL=sqlite:///./data/drugs.db - PUID=${PUID:-1000} - PGID=${PGID:-1000} - MQTT_BROKER_HOST=${MQTT_BROKER_HOST:-mosquitto} - MQTT_BROKER_PORT=${MQTT_BROKER_PORT:-1883} - MQTT_USERNAME=${MQTT_USERNAME:-} - MQTT_PASSWORD=${MQTT_PASSWORD:-} - MQTT_LABEL_TOPIC=${MQTT_LABEL_TOPIC:-vet/labels/print} - MQTT_STATUS_TOPIC=${MQTT_STATUS_TOPIC:-vet/labels/status} - LABEL_TEMPLATE_ID=${LABEL_TEMPLATE_ID:-vet_label} - NOTES_TEMPLATE_ID=${NOTES_TEMPLATE_ID:-notes_1} - LABEL_SIZE=${LABEL_SIZE:-29x90} - LABEL_TEST=${LABEL_TEST:-false} backup: image: python:3.11-slim user: "${PUID:-1000}:${PGID:-1000}" volumes: - ./data:/data - ./scripts/backup_sqlite.py:/usr/local/bin/backup_sqlite.py:ro environment: - SQLITE_DB_PATH=/data/drugs.db - BACKUP_DIR=/data/backups - BACKUP_INTERVAL_SECONDS=${BACKUP_INTERVAL_SECONDS:-3600} - BACKUP_RETENTION_DAYS=${BACKUP_RETENTION_DAYS:-7} command: ["python", "/usr/local/bin/backup_sqlite.py"] restart: unless-stopped mosquitto: image: eclipse-mosquitto:latest volumes: - ./mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro - ./mosquitto/config/pwfile:/mosquitto/config/pwfile:ro - mosquitto_data:/mosquitto/data - mosquitto_logs:/mosquitto/log environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} frontend: image: nginx:alpine volumes: - ./frontend:/usr/share/nginx/html:ro - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - backend - mosquitto networks: - default - webapps volumes: mosquitto_data: mosquitto_logs: networks: default: webapps: external: true