version: "2" services: otel: image: otel/opentelemetry-collector-contrib:${OTEL_COLLECT_TAG} command: [ "--config=/etc/otel-config.yaml" ] volumes: - ./otel-config.yaml:/etc/otel-config.yaml network_mode: "host" elastic: image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_BUNDLE_TAG} container_name: elastic environment: - "node.name=elastic" - "http.port=9200" - "cluster.name=es-docker-cluster" - "discovery.type=single-node" - "bootstrap.memory_lock=true" - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 nofile: 65536 volumes: - "es_data:/usr/share/elasticsearch/data" network_mode: "host" # kibana instance and collectors # see https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-docker.html kibana: image: docker.elastic.co/kibana/kibana:${ELASTIC_BUNDLE_TAG} container_name: kibana environment: SERVER_NAME: "kibana.local" # ELASTICSEARCH_URL: "http://localhost:9700" ELASTICSEARCH_HOSTS: "http://localhost:9200" depends_on: [ 'elastic' ] network_mode: "host" apm: image: docker.elastic.co/apm/apm-server:${ELASTIC_BUNDLE_TAG} container_name: apm volumes: - "./apm-config.yaml:/usr/share/apm-server/apm-server.yml:ro" depends_on: [ 'elastic' ] network_mode: "host" grafana: # see https://grafana.com/docs/grafana/latest/installation/docker/ image: "grafana/grafana:8.3.5" container_name: grafana # restart: unless-stopped environment: - "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel,grafana-worldmap-panel,grafana-polystat-panel" network_mode: "host" volumes: # chown 472:472 if needed - grafana:/var/lib/grafana - ./grafana/provisioning/:/etc/grafana/provisioning/ volumes: es_data: driver: local grafana: driver: local metricbeat: driver: local