services: console: build: . restart: unless-stopped ports: - "5000:5000" environment: - ASPNETCORE_ENVIRONMENT=Production - ConnectionStrings__DefaultConnection=Host=db;Database=acuvim;Username=acuvim;Password=${POSTGRES_PASSWORD} - Mqtt__Broker=mqtt - Mqtt__Port=8883 - Mqtt__Username=console - Mqtt__Password=${MQTT_PASSWORD} - Mqtt__UseTls=true - Firmware__BaseUrl=${CONSOLE_URL} - Jwt__Secret=${JWT_SECRET} depends_on: db: condition: service_healthy mqtt: condition: service_started volumes: - firmware-data:/app/firmware db: image: postgres:16 restart: unless-stopped environment: - POSTGRES_DB=acuvim - POSTGRES_USER=acuvim - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U acuvim"] interval: 10s timeout: 5s retries: 5 mqtt: image: eclipse-mosquitto:2 restart: unless-stopped ports: - "8883:8883" volumes: - mosquitto-data:/mosquitto/data - mosquitto-config:/mosquitto/config - ./mosquitto-prod.conf:/mosquitto/config/mosquitto.conf - ./mqtt-certs:/mosquitto/certs - ./mqtt-passwords:/mosquitto/passwords nginx: image: nginx:alpine restart: unless-stopped ports: - "443:443" - "80:80" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ssl-certs:/etc/letsencrypt depends_on: - console volumes: postgres-data: mosquitto-data: mosquitto-config: firmware-data: ssl-certs: