services: api-gateway: image: nginx:latest ports: - "8080:80" - "443:443" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/ssl:/etc/nginx/ssl depends_on: - user-manager - data-collector user-manager: build: ./microservices/user_manager ports: - "50051:50051" environment: - DATABASE_URL=postgresql://${USER_DB_USER}:${USER_DB_PASSWORD}@user-db:5432/${USER_DB_NAME} depends_on: user-db: condition: service_healthy user-db: image: postgres:13 ports: - "5432:5432" environment: - POSTGRES_USER=${USER_DB_USER} - POSTGRES_PASSWORD=${USER_DB_PASSWORD} - POSTGRES_DB=${USER_DB_NAME} volumes: - user_db_data:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U ${USER_DB_USER} -d ${USER_DB_NAME}" ] interval: 5s timeout: 5s retries: 5 data-collector: build: ./microservices/data_collector ports: - "50052:50052" environment: - DATABASE_URL=postgresql://${DATA_DB_USER}:${DATA_DB_PASSWORD}@data-db:5432/${DATA_DB_NAME} - OPEN_SKY_CLIENT_ID=${OPEN_SKY_CLIENT_ID} - OPEN_SKY_CLIENT_SECRET=${OPEN_SKY_CLIENT_SECRET} depends_on: data-db: condition: service_healthy data-db: image: postgres:13 ports: - "5433:5432" environment: - POSTGRES_USER=${DATA_DB_USER} - POSTGRES_PASSWORD=${DATA_DB_PASSWORD} - POSTGRES_DB=${DATA_DB_NAME} volumes: - data_db_data:/var/lib/postgresql/data healthcheck: test: [ "CMD-SHELL", "pg_isready -U ${DATA_DB_USER} -d ${DATA_DB_NAME}" ] interval: 5s timeout: 5s retries: 5 zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: kafka KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CREATE_TOPICS: "to-alert-system:1:1,to-notifier:1:1,sla_breach:1:1" volumes: - /var/run/docker.sock:/var/run/docker.sock alert-system: build: ./microservices/alert_system environment: - KAFKA_BROKER_URL=kafka:9092 depends_on: - kafka alert-notifier-system: build: ./microservices/alert_notifier_system environment: - KAFKA_BROKER_URL=kafka:9092 - DATABASE_URL=postgresql://${USER_DB_USER}:${USER_DB_PASSWORD}@user-db:5432/${USER_DB_NAME} - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN} depends_on: - kafka - user-db sla-breach-detector: build: ./microservices/sla_breach_detector environment: - KAFKA_BOOTSTRAP_SERVERS=kafka:9092 - PROMETHEUS_URL=http://prometheus:9090 depends_on: - kafka - prometheus prometheus: image: prom/prometheus:latest ports: - "9090:9090" volumes: - ./kubernetes/prometheus-config.yaml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' volumes: user_db_data: data_db_data: