# https://docs.docker.com/compose/environment-variables/envvars-precedence/ # Environment leverage the gerarchy defined in the docker compose between "env_file" and "environment" attributes # ecosystem variables defined in the "env_file" .env.${GUARDIAN_ENV}.guardian.system # specific service variables defined by "environment" can override what is defined in the ecosystem file # YAML anchor that contains common configuration elements for our services x-service-template: &service-template init: true env_file: - ./configs/.env.${GUARDIAN_ENV}.guardian.system environment: - GUARDIAN_ENV=${GUARDIAN_ENV} services: mongo: image: mongo:6.0.16 command: "--setParameter allowDiskUseByDefault=true" restart: always expose: - 27017 message-broker: image: nats:2.9.25 expose: - 4222 ports: - '8222:8222' command: '-c /etc/nats/nats.conf --http_port 8222' volumes: - ./configs/nats.conf:/etc/nats/nats.conf logger-service: <<: *service-template build: context: . dockerfile: ./logger-service/Dockerfile depends_on: - message-broker volumes: - ./logger-service/configs:/usr/local/app/configs:ro auth-service: <<: *service-template build: context: . dockerfile: ./auth-service/Dockerfile volumes: - ./auth-service/tls:/usr/local/app/tls:ro - ./auth-service/configs:/usr/local/app/configs:ro depends_on: - mongo - message-broker - logger-service expose: - 6555 - 5005 queue-service: <<: *service-template build: context: . dockerfile: ./queue-service/Dockerfile depends_on: - mongo - message-broker expose: - 6555 volumes: - ./queue-service/configs:/usr/local/app/configs:ro worker-service: <<: *service-template build: context: . dockerfile: ./worker-service/Dockerfile depends_on: queue-service: condition: service_started auth-service: condition: service_started expose: - 6555 volumes: - ./worker-service/tls:/usr/local/app/tls:ro - ./worker-service/configs:/usr/local/app/configs:ro deploy: replicas: 10 analytics-service: <<: *service-template build: context: . dockerfile: ./analytics-service/Dockerfile depends_on: - message-broker - queue-service expose: - 6555 ports: - "3000:3020" volumes: - ./analytics-service/configs:/usr/local/app/configs:ro networks: monitoring: driver: bridge