services: api: build: context: . dockerfile: Dockerfile image: reader-api:latest container_name: reader-api env_file: - .env ports: - "8000:8000" restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/health').read()"] interval: 30s timeout: 5s retries: 5 start_period: 20s depends_on: postgres: condition: service_healthy mongo: condition: service_healthy postgres: image: postgres:16-alpine container_name: reader-api-postgres profiles: ["localdb"] environment: POSTGRES_DB: reader POSTGRES_USER: reader POSTGRES_PASSWORD: reader ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U reader -d reader"] interval: 10s timeout: 5s retries: 10 mongo: image: mongo:7 container_name: reader-api-mongo profiles: ["localdb"] ports: - "27017:27017" volumes: - mongo_data:/data/db healthcheck: test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"] interval: 10s timeout: 5s retries: 10 volumes: postgres_data: mongo_data: