services: postgres: image: postgres:15 environment: POSTGRES_DB: flora POSTGRES_USER: flora POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-flora} volumes: - postgres_data:/var/lib/postgresql/data networks: - flora healthcheck: test: ['CMD-SHELL', 'pg_isready -U flora'] interval: 10s timeout: 5s retries: 5 restart: unless-stopped valkey: image: valkey/valkey:latest volumes: - valkey_data:/data networks: - flora healthcheck: test: ['CMD', 'valkey-cli', 'ping'] interval: 10s timeout: 5s retries: 5 restart: unless-stopped runtime: image: ghcr.io/uwu/flora:0.1.0@sha256:52cd83ede99c825321ce8c2aa84a27023519a1d6951c388289bebd2fc2a52d8f ports: - '3000:3000' volumes: - ./config.docker.toml:/home/flora/config.toml:ro depends_on: postgres: condition: service_healthy valkey: condition: service_healthy build-service: condition: service_healthy networks: - flora restart: unless-stopped build-service: build: context: . dockerfile: apps/build-service/Dockerfile image: flora-build-service:latest ports: - '3001:3001' environment: BUILD_SERVICE_SECRET: ${BUILD_SERVICE_SECRET?set BUILD_SERVICE_SECRET} BUILD_SERVICE_HOST: 0.0.0.0 BUILD_SERVICE_PORT: 3001 BUILD_SERVICE_DISABLE_MINIFY: 'true' BUILD_SERVICE_WORKSPACE_DIR: /app/build-workspace volumes: - build_service_workspace:/app/build-workspace networks: - flora healthcheck: test: [ 'CMD', 'node', '-e', "fetch('http://localhost:3001/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" ] interval: 30s timeout: 5s retries: 5 restart: unless-stopped volumes: postgres_data: valkey_data: build_service_workspace: networks: flora: name: flora