networks: sidelinja-dev: driver: bridge services: # === Lag A: Fundament === postgres: image: postgres:16 restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - ./.docker-data/postgres:/var/lib/postgresql/data - ./config/postgres/init:/docker-entrypoint-initdb.d ports: - "127.0.0.1:5432:5432" networks: - sidelinja-dev healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine restart: unless-stopped command: --save 60 1 --loglevel warning volumes: - ./.docker-data/redis:/data ports: - "127.0.0.1:6379:6379" networks: - sidelinja-dev healthcheck: test: ["CMD-SHELL", "redis-cli ping | grep PONG"] interval: 10s timeout: 5s retries: 5 # === Lag B: Sanntid === spacetimedb: image: clockworklabs/spacetime:latest restart: unless-stopped command: start volumes: - ./.docker-data/spacetimedb:/stdb ports: - "127.0.0.1:3000:3000" networks: - sidelinja-dev healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:3000/v1/ping || exit 1"] interval: 10s timeout: 5s retries: 5 # === AI Gateway === ai-gateway: image: ghcr.io/berriai/litellm:main-stable restart: unless-stopped command: --config /etc/litellm/config.yaml environment: LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY} GEMINI_API_KEY: ${GEMINI_API_KEY} OPENROUTER_API_KEY: ${OPENROUTER_API_KEY} volumes: - ./config/litellm:/etc/litellm ports: - "127.0.0.1:4000:4000" networks: - sidelinja-dev healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:4000/health/liveliness || exit 1"] interval: 15s timeout: 5s retries: 3 # === Whisper: Transkripsjon === whisper: image: fedirz/faster-whisper-server:latest-cpu restart: unless-stopped environment: WHISPER__MODEL: Systran/faster-whisper-small WHISPER__INFERENCE_DEVICE: cpu volumes: - ./.docker-data/whisper-models:/root/.cache/huggingface - ./.docker-data/whisper-large-v3:/root/.cache/huggingface/hub/models--Systran--faster-whisper-large-v3/snapshots/main ports: - "127.0.0.1:8000:8000" networks: - sidelinja-dev caddy: image: caddy:2 restart: unless-stopped ports: - "127.0.0.1:80:80" - "127.0.0.1:443:443" volumes: - ./config/caddy/Caddyfile.dev:/etc/caddy/Caddyfile - ./.docker-data/caddy:/data - ./.docker-data/logs/caddy:/var/log/caddy - ./.docker-data/media:/srv/media:ro networks: - sidelinja-dev