diff --git a/analytics-engine/docker-compose.yml b/analytics-engine/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4a6320a2151bc53fbf2abe29c965d7e3d56a2931
--- /dev/null
+++ b/analytics-engine/docker-compose.yml
@@ -0,0 +1,76 @@
+services:
+  database: 
+    image: postgres:15.1-alpine
+    restart: unless-stopped
+    environment:
+      - POSTGRES_DB=${POSTGRES_DATABASE}
+      - POSTGRES_USER=${POSTGRES_USER}
+      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+    volumes:
+      - ./db/production:/var/lib/postgresql/data
+    networks:
+        - internal
+
+  redis_db:
+    image: redis:7-alpine
+    restart: unless-stopped
+    command: redis-server --requirepass ${REDIS_PASSWORD}
+    networks:
+      - internal
+
+  scheduler:
+    image: registry.git.rwth-aachen.de/polaris/entwicklung/analytics-engine/scheduler:latest
+    restart: unless-stopped
+    expose:
+      - 8000
+    labels:
+      - traefik.enable=true
+      - traefik.http.routers.${WEBSITE}-backend.rule=Host(`${URL}` && PathPrefix(`/api`))
+      - traefik.http.routers.${WEBSITE}-backend.tls=true
+      - traefik.http.routers.${WEBSITE}-backend.tls.certresolver=lets-encrypt
+      #- traefik.http.routers.${WEBSITE}.middlewares=security-headers@file
+    networks:
+      - internal
+      - web
+    depends_on:
+      - database
+      - redis_db
+    volumes:
+      - ".env:/app/.env"
+      - "./configuration:/app/configuration"
+
+  beat:
+    image: registry.git.rwth-aachen.de/polaris/entwicklung/analytics-engine/scheduler:latest
+    restart: unless-stopped
+    entrypoint: celery
+    command: -A scheduler.worker beat -l info --scheduler celery_sqlalchemy_scheduler.schedulers:DatabaseScheduler
+    networks:
+      - internal
+    depends_on:
+      - database
+      - redis_db
+    volumes:
+      - ".env:/app/.env"
+      - "./configuration:/app/configuration"
+
+  worker:
+    image: registry.git.rwth-aachen.de/polaris/entwicklung/analytics-engine/scheduler:latest
+    restart: unless-stopped
+    entrypoint: celery
+    command: -A scheduler.worker worker -l info
+    networks:
+      - internal
+    depends_on:
+      - database
+      - redis_db
+      - beat
+    volumes:
+      - ".env:/app/.env"
+      - "./configuration:/app/configuration"
+
+      
+networks:
+  web:
+    external: true
+  internal:
+    external: false