compose.yaml
services: mongo: image: mongo:latest ports: - 27017:27017 volumes: - mongo_data:/data/db command: ["mongod", "--replSet", "rs0", "--bind_ip_all"] setup-mongo-replica: image: mongo:latest depends_on: - mongo entrypoint: > sh -c " until mongosh --eval 'print(1)' &>/dev/null; do sleep 1 done; mongosh --eval ' rs.initiate({ _id: \"rs0\", members: [{ _id: 0, host: \"mongodb:27017\" }] })'" pubsub-emulator: image: gcr.io/google.com/cloudsdktool/cloud-sdk:455.0.0-emulators command: > gcloud beta emulators pubsub start --project=dummy-project --host-port=0.0.0.0:8085 --quiet environment: # TODO: use environment variables PUBSUB_PROJECT_ID: "dummy-project" PUBSUB_EMULATOR_HOST: "localhost:8085" PUBSUB_TOPIC_ID: "dymmy-topic" ports: - "8085:8085" entrypoint: /bin/bash setup-pubsub-emulator: image: gcr.io/google.com/cloudsdktool/cloud-sdk:455.0.0-emulators depends_on: - pubsub-emulator environment: PUBSUB_EMULATOR_HOST: "pubsub-emulator:8085" command: | bash -c " until curl -X GET \"http://pubsub-emulator:8085\"; do sleep 1 done curl -X PUT "http://pubsub-emulator:8085/v1/projects/dummy-project/topics/dummy-topic" " mongo-streamer: build: context: . restart: always depends_on: - setup-mongo-replica - setup-pubsub-emulator ports: - "8080:8080" develop: watch: - action: rebuild path: . ignore: - .git - .gitignore - README.md - ./bin - ./monitors environment: MONGO_DB_URI: "mongodb://mongo:27017/test?tls=false&directConnection=true&retryWrites=false&replicaSet=rs0" MONGO_DB_COLLECTION: tweets MONGO_DB_DATABASE: test METRICS_ADDR: :8080 PUBSUB_PROJECT_ID: "dummy-project" PUBSUB_TOPIC_ID: "dummy-topic" PUBSUB_EMULATOR_HOST: "pubsub-emulator:8085" PUBSUB_PUBLISH_FORMAT: "json" prometheus: image: prom/prometheus ports: - "9090:9090" volumes: - ./monitors/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yaml - prometheus_data:/prometheus command: "--config.file=/etc/prometheus/prometheus.yaml" restart: always grafana: image: grafana/grafana depends_on: - prometheus volumes: - ./monitors/grafana/dashboards:/var/lib/grafana/dashboards - ./monitors/grafana/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml - ./monitors/grafana/datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yaml - grafana_data:/var/lib/grafana ports: - "3000:3000" restart: always volumes: mongo_data: prometheus_data: grafana_data: