diff --git a/docker-compose.yml b/docker-compose.yml
index 291d59d405f42b635835d2f41d5d704841c84366..b222c8c892d0d6a7026d0bff6f8d10982177fcb8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -21,6 +21,28 @@ services:
     volumes:
       - elasticsearch:/usr/share/elasticsearch/data
 
+  filebeat_setup:
+    command: >
+      filebeat setup
+      -E output.elasticsearch.hosts=['elasticsearch:9200']
+      -E setup.kibana.host=kibana:5601
+      -E setup.ilm.overwrite=true
+    image: docker.elastic.co/beats/filebeat-oss:7.12.1
+    links: &beat_links
+      - elasticsearch
+      - kibana
+    restart: on-failure
+
+  heartbeat_setup:
+    command: >
+      heartbeat setup
+      -E output.elasticsearch.hosts=['elasticsearch:9200']
+      -E setup.kibana.host=kibana:5601
+      -E setup.ilm.overwrite=true
+    image: docker.elastic.co/beats/heartbeat-oss:7.12.1
+    links: *beat_links
+    restart: on-failure
+
   kibana:
     environment:
       ELASTICSEARCH_HOSTS: |
@@ -33,6 +55,26 @@ services:
       - elasticsearch
     restart: always
 
+  metricbeat_setup:
+    command: >
+      metricbeat setup
+      -E output.elasticsearch.hosts=['elasticsearch:9200']
+      -E setup.kibana.host=kibana:5601
+      -E setup.ilm.overwrite=true
+    image: docker.elastic.co/beats/metricbeat-oss:7.12.1
+    links: *beat_links
+    restart: on-failure
+
+  packetbeat_setup:
+    command: >
+      packetbeat setup
+      -E output.elasticsearch.hosts=['elasticsearch:9200']
+      -E setup.kibana.host=kibana:5601
+      -E setup.ilm.overwrite=true
+    image: docker.elastic.co/beats/packetbeat-oss:7.12.1
+    links: *beat_links
+    restart: on-failure
+
 volumes:
   elasticsearch: