version: "3.8" services: postgres: image: pgvector/pgvector:pg16 restart: unless-stopped environment: POSTGRES_DB: pedquiz POSTGRES_USER: pedquiz POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U pedquiz"] interval: 5s timeout: 5s retries: 10 frontend: build: ./frontend ports: - "127.0.0.1:8081:80" depends_on: - backend restart: unless-stopped backend: build: ./backend env_file: - ./backend/.env environment: - ANONYMIZED_TELEMETRY=False volumes: - uploads_data:/app/uploads - chroma_data:/app/chroma_data depends_on: postgres: condition: service_healthy redis: condition: service_started restart: unless-stopped celery: build: ./backend command: celery -A app.tasks worker --loglevel=info --concurrency=2 env_file: - ./backend/.env environment: - ANONYMIZED_TELEMETRY=False volumes: - uploads_data:/app/uploads - chroma_data:/app/chroma_data depends_on: postgres: condition: service_healthy redis: condition: service_started restart: unless-stopped redis: image: redis:7-alpine volumes: - redis_data:/data restart: unless-stopped volumes: uploads_data: chroma_data: postgres_data: redis_data: