services: rabbitmq: image: "rabbitmq:3-management-alpine" ports: - 5672:5672 - 15672:15672 healthcheck: # Rabbit health check info https://www.rabbitmq.com/monitoring.html#health-checks test: ["CMD", "rabbitmq-diagnostics", "-q", "status"] # test: ["CMD", "rabbitmqctl", "status"] # alternative interval: 10s timeout: 10s retries: 5 postgres: image: "postgres:13-alpine" environment: - POSTGRES_PASSWORD ports: - 5432:5432 volumes: - ./init/database.sql:/docker-entrypoint-initdb.d/database.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 10s retries: 5 redis: image: "redis:6-alpine" ports: - 6379:6379 healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 10s retries: 5 server: build: context: . dockerfile: server.Dockerfile ports: - 8080:8080 env_file: - .env # restart: on-failure depends_on: rabbitmq: condition: service_healthy backend: container_name: microservices_backend build: context: . dockerfile: backend.Dockerfile env_file: - .env stdin_open: true tty: true depends_on: rabbitmq: condition: service_healthy database: build: context: . dockerfile: database.Dockerfile env_file: - .env depends_on: rabbitmq: condition: service_healthy postgres: condition: service_healthy cache: build: context: . dockerfile: cache.Dockerfile env_file: - .env depends_on: rabbitmq: condition: service_healthy redis: condition: service_healthy networks: default: name: microservices_network