diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9a14c9fc46efed23bab9807cb0b01266e653930a..7265d00be31f281befcf517db487385abffc1441 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -292,6 +292,10 @@ scan-analyse-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -310,6 +314,10 @@ scan-authentication-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -328,6 +336,10 @@ scan-broker-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -346,6 +358,10 @@ scan-container-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -364,6 +380,10 @@ scan-database-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -382,6 +402,10 @@ scan-gateway-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -400,6 +424,10 @@ scan-identifier-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -418,6 +446,10 @@ scan-metadata-db:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -436,6 +468,10 @@ scan-metadata-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -454,6 +490,10 @@ scan-proxy:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -472,6 +512,10 @@ scan-query-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -490,6 +534,10 @@ scan-search-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -508,6 +556,10 @@ scan-semantics-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -526,6 +578,10 @@ scan-table-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -544,6 +600,10 @@ scan-ui:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
@@ -562,6 +622,10 @@ scan-user-service:
   stage: scan-docker
   needs:
     - build-docker
+  only:
+    refs:
+      - dev
+      - master
   allow_failure: true
   before_script:
     - docker logout ghcr.io
diff --git a/dbrepo-gateway-service/Dockerfile b/dbrepo-gateway-service/Dockerfile
deleted file mode 100644
index 0633838bd4f4d87ea5e12b435a9ef0ae71672bfb..0000000000000000000000000000000000000000
--- a/dbrepo-gateway-service/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM nginx:alpine AS runtime
-MAINTAINER Martin Weise <martin.weise@tuwien.ac.at
-
-COPY ./dbrepo.conf /etc/nginx/conf.d/default.conf
-
-EXPOSE 443
-EXPOSE 80
\ No newline at end of file
diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo.conf
similarity index 100%
rename from dbrepo-gateway-service/dbrepo.conf
rename to dbrepo.conf
diff --git a/docker-compose.dbrepo2.yml b/docker-compose.dbrepo2.yml
index b45bc9514c464e92ce05c38bfe5d21007951c78c..5efb845c60a549562375e11c53f69713b0c85981 100644
--- a/docker-compose.dbrepo2.yml
+++ b/docker-compose.dbrepo2.yml
@@ -49,34 +49,6 @@ services:
     logging:
       driver: json-file
 
-  dbrepo-discovery-service:
-    restart: "no"
-    container_name: dbrepo-discovery-service
-    hostname: discovery-service
-    image: dbrepo/discovery-service:latest
-    networks:
-      core:
-    env_file:
-      - .env
-    logging:
-      driver: json-file
-
-  dbrepo-gateway-service:
-    restart: "no"
-    container_name: dbrepo-gateway-service
-    hostname: gateway-service
-    image: dbrepo/gateway-service:latest
-    networks:
-      core:
-      public:
-    env_file:
-      - .env
-    depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
-    logging:
-      driver: json-file
-
   dbrepo-database-service:
     restart: "no"
     container_name: dbrepo-database-service
@@ -130,8 +102,6 @@ services:
     volumes:
       - authentication-service-data:/opt/keycloak/data/
     depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
       dbrepo-metadata-db:
         condition: service_healthy
     logging:
@@ -151,7 +121,7 @@ services:
       - ${SHARED_FILESYSTEM}:/tmp
     depends_on:
       dbrepo-broker-service:
-        condition: service_started
+        condition: service_healthy
       dbrepo-table-service:
         condition: service_healthy
       dbrepo-authentication-service:
@@ -160,7 +130,7 @@ services:
       driver: json-file
 
   dbrepo-table-service:
-    restart: "no"
+    restart: on-failure
     container_name: dbrepo-table-service
     hostname: table-service
     image: dbrepo/table-service:latest
@@ -178,7 +148,7 @@ services:
       dbrepo-search-service:
         condition: service_started
       dbrepo-broker-service:
-        condition: service_started
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -221,7 +191,7 @@ services:
       driver: json-file
 
   dbrepo-analyse-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-analyse-service
     hostname: analyse-service
     image: dbrepo/analyse-service:latest
@@ -233,9 +203,6 @@ services:
     volumes:
       - ${SHARED_FILESYSTEM}:/tmp
       - /var/run/docker.sock:/var/run/docker.sock
-    depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
     logging:
       driver: json-file
 
@@ -271,8 +238,6 @@ services:
       - ${SHARED_FILESYSTEM}:/tmp
       - /var/run/docker.sock:/var/run/docker.sock
     depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
       dbrepo-metadata-db:
         condition: service_healthy
       dbrepo-authentication-service:
@@ -293,8 +258,6 @@ services:
     env_file:
       - .env
     depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
       dbrepo-authentication-service:
         condition: service_healthy
     volumes:
@@ -306,16 +269,17 @@ services:
     restart: always
     container_name: dbrepo-search-service
     hostname: search-service
-    image: dbrepo/search-service:latest
+    image: elasticsearch:8.7.1
     networks:
       core:
-    depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
-    ports:
-      - 9200:9200
     env_file:
       - .env
+    environment:
+      discovery.type: "single-node"
+      ES_JAVA_OPTS: "-Xms2g -Xmx2g"
+      logger.level: "WARN"
+      bootstrap.memory_lock: "true"
+      xpack.security.enabled: "true"
     volumes:
       - search-service-data:/usr/share/elasticsearch/data
     logging:
@@ -340,3 +304,46 @@ services:
         condition: service_healthy
     logging:
       driver: json-file
+
+  dbrepo-gateway-service:
+    restart: "no"
+    container_name: dbrepo-gateway-service
+    hostname: gateway-service
+    image: nginx:alpine
+    networks:
+      core:
+      public:
+    ports:
+      - "80:80"
+      - "443:443"
+    volumes:
+      - ./dbrepo.conf:/etc/nginx/conf.d/default.conf
+    depends_on:
+      dbrepo-analyse-service:
+        condition: service_healthy
+      dbrepo-authentication-service:
+        condition: service_healthy
+      dbrepo-broker-service:
+        condition: service_healthy
+      dbrepo-container-service:
+        condition: service_healthy
+      dbrepo-database-service:
+        condition: service_healthy
+      dbrepo-identifier-service:
+        condition: service_healthy
+      dbrepo-metadata-service:
+        condition: service_healthy
+      dbrepo-query-service:
+        condition: service_healthy
+      dbrepo-search-service:
+        condition: service_started
+      dbrepo-semantics-service:
+        condition: service_healthy
+      dbrepo-table-service:
+        condition: service_healthy
+      dbrepo-ui:
+        condition: service_started
+      dbrepo-user-service:
+        condition: service_healthy
+    logging:
+      driver: json-file
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 32ec047479cdc2578c9c9f6a8624b3db24f53a59..821612b5c1de921db6e6130994ef7bb8b38da76c 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -8,6 +8,7 @@ volumes:
   metadata-db-data:
   search-service-data:
   broker-service-data:
+  authentication-service-data:
 
 networks:
   public:
@@ -32,7 +33,7 @@ networks:
 services:
 
   dbrepo-metadata-db:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-metadata-db
     hostname: metadata-db
     image: dbrepo/metadata-db:1.2
@@ -48,37 +49,8 @@ services:
     logging:
       driver: json-file
 
-  dbrepo-discovery-service:
-    restart: on-failure
-    container_name: dbrepo-discovery-service
-    hostname: discovery-service
-    image: dbrepo/discovery-service:1.2
-    networks:
-      core:
-    env_file:
-      - .env
-    logging:
-      driver: json-file
-
-  dbrepo-gateway-service:
-    restart: on-failure
-    container_name: dbrepo-gateway-service
-    hostname: gateway-service
-    image: dbrepo/gateway-service:1.2
-    networks:
-      core:
-    ports:
-      - "80:80"
-    env_file:
-      - .env
-    depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
-    logging:
-      driver: json-file
-
   dbrepo-database-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-database-service
     hostname: database-service
     image: dbrepo/database-service:1.2
@@ -100,7 +72,7 @@ services:
       driver: json-file
 
   dbrepo-container-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-container-service
     hostname: container-service
     image: dbrepo/container-service:1.2
@@ -117,26 +89,27 @@ services:
       driver: json-file
 
   dbrepo-authentication-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-authentication-service
     hostname: authentication-service
     image: dbrepo/authentication-service:1.2
     networks:
       core:
+    ports:
+      - "8443:8443"
+      - "8080:8080"
     env_file:
       - .env
+    volumes:
+      - authentication-service-data:/opt/keycloak/data/
     depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
-      dbrepo-broker-service:
-        condition: service_started
       dbrepo-metadata-db:
         condition: service_healthy
     logging:
       driver: json-file
 
   dbrepo-query-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-query-service
     hostname: query-service
     image: dbrepo/query-service:1.2
@@ -148,6 +121,8 @@ services:
     volumes:
       - ${SHARED_FILESYSTEM}:/tmp
     depends_on:
+      dbrepo-broker-service:
+        condition: service_healthy
       dbrepo-table-service:
         condition: service_healthy
       dbrepo-authentication-service:
@@ -174,12 +149,12 @@ services:
       dbrepo-search-service:
         condition: service_started
       dbrepo-broker-service:
-        condition: service_started
+        condition: service_healthy
     logging:
       driver: json-file
 
   dbrepo-identifier-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-identifier-service
     hostname: identifier-service
     image: dbrepo/identifier-service:1.2
@@ -198,7 +173,7 @@ services:
       driver: json-file
 
   dbrepo-metadata-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-metadata-service
     hostname: metadata-service
     image: dbrepo/metadata-service:1.2
@@ -207,13 +182,15 @@ services:
     env_file:
       - .env
     depends_on:
+      dbrepo-authentication-service:
+        condition: service_healthy
       dbrepo-metadata-db:
-        condition: service_started
+        condition: service_healthy
     logging:
       driver: json-file
 
   dbrepo-analyse-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-analyse-service
     hostname: analyse-service
     image: dbrepo/analyse-service:1.2
@@ -225,14 +202,30 @@ services:
     volumes:
       - ${SHARED_FILESYSTEM}:/tmp
       - /var/run/docker.sock:/var/run/docker.sock
+    logging:
+      driver: json-file
+
+  dbrepo-user-service:
+    restart: "no"
+    container_name: dbrepo-user-service
+    hostname: user-service
+    image: dbrepo/user-service:1.2
+    networks:
+      core:
+    ports:
+      - "9098:9098"
+    env_file:
+      - .env
     depends_on:
-      dbrepo-discovery-service:
+      dbrepo-metadata-db:
+        condition: service_healthy
+      dbrepo-authentication-service:
         condition: service_healthy
     logging:
       driver: json-file
 
   dbrepo-semantics-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-semantics-service
     hostname: semantics-service
     image: dbrepo/semantics-service:1.2
@@ -244,15 +237,15 @@ services:
       - ${SHARED_FILESYSTEM}:/tmp
       - /var/run/docker.sock:/var/run/docker.sock
     depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
       dbrepo-metadata-db:
         condition: service_healthy
+      dbrepo-authentication-service:
+        condition: service_healthy
     logging:
       driver: json-file
 
   dbrepo-broker-service:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-broker-service
     hostname: broker-service
     image: dbrepo/broker-service:1.2
@@ -263,7 +256,7 @@ services:
     env_file:
       - .env
     depends_on:
-      dbrepo-discovery-service:
+      dbrepo-authentication-service:
         condition: service_healthy
     volumes:
       - broker-service-data:/var/lib/rabbitmq/
@@ -274,21 +267,24 @@ services:
     restart: always
     container_name: dbrepo-search-service
     hostname: search-service
-    image: dbrepo/search-service:1.2
+    image: elasticsearch:8.7.1
     networks:
       core:
-    depends_on:
-      dbrepo-discovery-service:
-        condition: service_healthy
     env_file:
       - .env
+    environment:
+      discovery.type: "single-node"
+      ES_JAVA_OPTS: "-Xms2g -Xmx2g"
+      logger.level: "WARN"
+      bootstrap.memory_lock: "true"
+      xpack.security.enabled: "true"
     volumes:
       - search-service-data:/usr/share/elasticsearch/data
     logging:
       driver: json-file
 
   dbrepo-ui:
-    restart: on-failure
+    restart: "no"
     container_name: dbrepo-ui
     hostname: ui
     image: dbrepo/ui:1.2
@@ -308,3 +304,46 @@ services:
         condition: service_healthy
     logging:
       driver: json-file
+
+  dbrepo-gateway-service:
+    restart: "no"
+    container_name: dbrepo-gateway-service
+    hostname: gateway-service
+    image: nginx:alpine
+    networks:
+      core:
+      public:
+    ports:
+      - "80:80"
+      - "443:443"
+    volumes:
+      - ./dbrepo.conf:/etc/nginx/conf.d/default.conf
+    depends_on:
+      dbrepo-analyse-service:
+        condition: service_healthy
+      dbrepo-authentication-service:
+        condition: service_healthy
+      dbrepo-broker-service:
+        condition: service_healthy
+      dbrepo-container-service:
+        condition: service_healthy
+      dbrepo-database-service:
+        condition: service_healthy
+      dbrepo-identifier-service:
+        condition: service_healthy
+      dbrepo-metadata-service:
+        condition: service_healthy
+      dbrepo-query-service:
+        condition: service_healthy
+      dbrepo-search-service:
+        condition: service_started
+      dbrepo-semantics-service:
+        condition: service_healthy
+      dbrepo-table-service:
+        condition: service_healthy
+      dbrepo-ui:
+        condition: service_started
+      dbrepo-user-service:
+        condition: service_healthy
+    logging:
+      driver: json-file
diff --git a/docker-compose.yml b/docker-compose.yml
index 6ecf19c0fb6d01d186799dbdf3a99156ee9f6277..839aeae2778de5b3bd062c328034283da91c067c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -339,16 +339,15 @@ services:
     restart: "no"
     container_name: dbrepo-gateway-service
     hostname: gateway-service
-    build: ./dbrepo-gateway-service
-    image: dbrepo-gateway-service
+    image: nginx:alpine
     networks:
       core:
       public:
     ports:
       - "80:80"
       - "443:443"
-    env_file:
-      - .env
+    volumes:
+      - ./dbrepo.conf:/etc/nginx/conf.d/default.conf
     depends_on:
       dbrepo-analyse-service:
         condition: service_healthy