version: '3.8' services: backend: build: context: . dockerfile: backend/Dockerfile networks: - inventory_net ports: - "8000:8000" volumes: - ./data:/app/data - ./logs:/app/logs environment: - DATA_DIR=/app/data - LOGS_DIR=/app/logs restart: unless-stopped frontend: build: context: . dockerfile: frontend/Dockerfile networks: - inventory_net ports: - "3000:3000" volumes: - ./logs:/app/logs # Write Next.js logs to both stdout (docker logs) and file (mapped volume) command: sh -c "mkdir -p /app/logs && node server.js 2>&1 | tee -a /app/logs/frontend.log" restart: unless-stopped proxy: image: caddy:alpine networks: - inventory_net ports: - "3002:3002" - "3003:3003" volumes: - ./Caddyfile:/etc/caddy/Caddyfile # Persist the internal Caddy certificates so users don't get new certificate warnings constantly - ./data/caddy_data:/data - ./data/caddy_config:/config depends_on: - frontend - backend restart: unless-stopped networks: inventory_net: driver: bridge