version: "3.9" # Production deployment - clean instance without demo data # Usage: podman-compose -f compose/production.yml up -d services: postgres: image: postgres:16 container_name: likwid-prod-db restart: unless-stopped ports: - "${DB_PORT:-5432}:5432" environment: POSTGRES_USER: ${POSTGRES_USER:-likwid} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB:-likwid_prod} volumes: - likwid_prod_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-likwid}"] interval: 10s timeout: 5s retries: 5 backend: build: context: ../backend dockerfile: Dockerfile args: INCLUDE_DEMO_SEED: "false" container_name: likwid-prod-backend restart: unless-stopped ports: - "${BACKEND_PORT:-3000}:3000" environment: DATABASE_URL: postgres://${POSTGRES_USER:-likwid}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-likwid_prod} JWT_SECRET: ${JWT_SECRET} SERVER_HOST: 0.0.0.0 SERVER_PORT: 3000 DEMO_MODE: "false" RUST_LOG: info depends_on: postgres: condition: service_healthy frontend: build: context: ../frontend dockerfile: Dockerfile args: API_BASE: ${API_BASE:-http://localhost:3000} container_name: likwid-prod-frontend restart: unless-stopped ports: - "${FRONTEND_PORT:-4321}:4321" environment: INTERNAL_API_BASE: http://backend:3000 API_BASE: ${API_BASE:-http://localhost:3000} depends_on: - backend volumes: likwid_prod_data: