services: db: image: postgres:16-alpine environment: POSTGRES_DB: qa_test POSTGRES_USER: qa_user POSTGRES_PASSWORD: qa_password volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U qa_user -d qa_test"] interval: 5s timeout: 5s retries: 10 backend: build: ./backend environment: DATABASE_URL: postgresql+asyncpg://qa_user:qa_password@db:5432/qa_test depends_on: db: condition: service_healthy volumes: - ./backend:/app frontend: build: ./frontend volumes: - ./frontend/src:/app/src - ./frontend/index.html:/app/index.html depends_on: - backend nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - backend - frontend volumes: postgres_data: