services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: postgres_user POSTGRES_PASSWORD: postgres_password POSTGRES_DB: app ports: - "5432:5432" volumes: - pg_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres_user -d app"] interval: 5s timeout: 5s retries: 10 rabbitmq: image: rabbitmq:3-management-alpine environment: RABBITMQ_DEFAULT_USER: rabbit RABBITMQ_DEFAULT_PASS: rabbit RABBITMQ_DEFAULT_VHOST: / ports: - "5672:5672" - "15672:15672" volumes: - rabbit_data:/var/lib/rabbitmq healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 10s timeout: 5s retries: 10 app: build: context: . dockerfile: Dockerfile env_file: - .env ports: - "3000:3000" depends_on: postgres: condition: service_healthy rabbitmq: condition: service_healthy restart: unless-stopped volumes: pg_data: rabbit_data: