version: '3.5' services: publisher: cpus: 0.5 mem_reservation: "10M" mem_limit: "250M" build: context: ../packages/publisher dockerfile: Dockerfile container_name: nest_publisher environment: - PORT=1992 ports: - '1992:1992' volumes: - ../packages/publisher/src:/app/src depends_on: rabbitmq: condition: service_healthy redis: condition: service_healthy links: - redis subscriber: cpus: 0.5 mem_reservation: "10M" mem_limit: "250M" build: context: ../packages/subscriber dockerfile: Dockerfile container_name: nest_subscriber environment: - PORT=1993 ports: - '1993:1993' volumes: - ../packages/subscriber/src:/app/src depends_on: rabbitmq: condition: service_healthy redis: condition: service_healthy links: - redis prometheus: image: prom/prometheus:latest volumes: - prometheus_data:/prometheus - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' ports: - '9090:9090' grafana: image: grafana/grafana:latest volumes: - grafana_data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning - ./grafana/config.ini:/etc/grafana/config.ini - ./grafana/dashboards:/var/lib/grafana/dashboards environment: - GF_SECURITY_ADMIN_PASSWORD=admin depends_on: - prometheus ports: - '3000:3000' rabbitmq: image: rabbitmq:3-management container_name: rabbitmq volumes: - ./rabbitmq/advanced.config:/etc/rabbitmq/advanced.config:ro - ./rabbitmq/definitions.json:/opt/definitions.json:ro - "./enabled_plugins:/var/lib/rabbitmq/enabled_plugins" ports: - 5672:5672 - 15672:15672 healthcheck: test: rabbitmq-diagnostics -q ping interval: 30s timeout: 30s retries: 3 redis: image: redis:6.2-alpine restart: always ports: - '6379:6379' command: redis-server --save 20 1 --loglevel warning --requirepass password volumes: - redis_data:/data healthcheck: test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] redis-exporter: image: oliver006/redis_exporter container_name: redis_exporter ports: - 9121:9121 environment: REDIS_ADDR: "redis:6379" REDIS_USER: null REDIS_PASSWORD: password links: - redis - prometheus mongo: image: mongo:latest restart: always ports: - 27017:27017 healthcheck: test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/sample --quiet environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=admin123 - MONGO_INITDB_DATABASE=sample mongo-prometheus: image: bitnami/mongodb-exporter:0.11.0-debian-10-r75 ports: - 9216:9216 environment: - MONGODB_URI=mongodb://admin:admin123@mongo:27017 links: - mongo - prometheus volumes: prometheus_data: {} grafana_data: {} mongodb_data: {} redis_data: {}