version: '3.8' services: fastapi-app: build: context: . dockerfile: Dockerfile ports: - "8000:8000" volumes: - ./app:/app/app:ro - ./data:/app/data:ro - ./tests:/app/tests:ro - ./migrations:/app/migrations:ro env_file: - .env environment: - PYTHONPATH=${PYTHONPATH} command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload --reload-dir /app/app depends_on: postgres: condition: service_healthy postgres: image: postgres:15-alpine env_file: - .env environment: - POSTGRES_DB=${POSTGRES_DATABASE_DB} - POSTGRES_USER=${POSTGRES_DATABASE_USER} - POSTGRES_PASSWORD=${POSTGRES_DATABASE_PASSWORD} ports: - "${POSTGRES_DATABASE_PORT}:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_DATABASE_USER} -d ${POSTGRES_DATABASE_DB}"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data: