version: '3' services: # Backend backend: build: context: ./backend container_name: myp-backend restart: always environment: - SECRET_KEY=${SECRET_KEY:-7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F} - DATABASE_PATH=${DATABASE_PATH:-instance/myp.db} - TAPO_USERNAME=${TAPO_USERNAME:-till.tomczak@mercedes-benz.com} - TAPO_PASSWORD=${TAPO_PASSWORD:-744563017196A} - "PRINTERS=${PRINTERS:-{\"Printer 1\": {\"ip\": \"192.168.0.100\"}, \"Printer 2\": {\"ip\": \"192.168.0.101\"}, \"Printer 3\": {\"ip\": \"192.168.0.102\"}, \"Printer 4\": {\"ip\": \"192.168.0.103\"}, \"Printer 5\": {\"ip\": \"192.168.0.104\"}, \"Printer 6\": {\"ip\": \"192.168.0.106\"}}}" - FLASK_APP=app.py - PYTHONUNBUFFERED=1 - HOST=0.0.0.0 - PORT=5000 volumes: - ./backend/logs:/app/logs - ./backend/instance:/app/instance networks: myp-network: ipv4_address: 192.168.0.5 expose: - "5000" ports: - "5000:5000" healthcheck: test: ["CMD", "wget", "--spider", "http://localhost:5000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Next.js Frontend frontend: build: context: ./frontend container_name: myp-rp restart: unless-stopped environment: - NODE_ENV=production - NEXT_PUBLIC_API_URL=/api networks: - myp-network expose: - "3000" healthcheck: test: ["CMD", "wget", "--spider", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s depends_on: - backend # Caddy Proxy caddy: image: caddy:2.7-alpine container_name: myp-caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./frontend/docker/caddy/Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config networks: - myp-network extra_hosts: - "host.docker.internal:host-gateway" environment: - CADDY_HOST=53.37.211.254 - CADDY_DOMAIN=m040tbaraspi001.de040.corpintra.net cap_add: - NET_ADMIN depends_on: - frontend - backend networks: myp-network: driver: bridge ipam: driver: default config: - subnet: 192.168.0.0/24 gateway: 192.168.0.1 volumes: caddy_data: caddy_config: