From bd2ca65f6716fe6db31ac912c4afb0cf0a2b8d33 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Wed, 24 Feb 2021 19:31:12 +0100
Subject: [PATCH] Refs #6
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Add colorful output depending on log severity 🎉
- Improved Dockerfile to use Docker caching better (=as long as pom.xml does not change, doesn't download deps again)
- Surpress bulky Spring INFO output
- Fix useless "No URLs will be polled" warning through suggested empty config.properties (https://github.com/Netflix/Hystrix/issues/275)
- Finally replaced Spring Web MVC with Webflux
- CORS Config replacing old Web MVC Config (fixes warning in f622eb3d3a85c082e3306a4b4923cf66abc546cd)
---
 docker-compose.yml                            | 48 +++++++------------
 fda-container-managing-service/Dockerfile     |  7 +--
 .../resources/application-docker.properties   |  5 +-
 .../src/main/resources/config.properties      |  1 +
 fda-database-managing-service/Dockerfile      |  7 +--
 .../resources/application-docker.properties   |  5 +-
 .../src/main/resources/config.properties      |  1 +
 fda-discovery-server/Dockerfile               |  3 +-
 .../resources/application-docker.properties   |  3 +-
 .../src/main/resources/config.properties      |  1 +
 fda-gateway-service/Dockerfile                |  3 +-
 fda-gateway-service/pom.xml                   |  2 +-
 .../gatewayservice/config/WebConfig.java      |  9 ++--
 .../resources/application-docker.properties   |  4 +-
 .../src/main/resources/config.properties      |  1 +
 fda-query-service/Dockerfile                  |  7 +--
 .../resources/application-docker.properties   |  5 +-
 .../src/main/resources/config.properties      |  1 +
 fda-table-service/Dockerfile                  |  7 +--
 .../resources/application-docker.properties   |  5 +-
 .../src/main/resources/config.properties      |  1 +
 21 files changed, 64 insertions(+), 62 deletions(-)
 create mode 100644 fda-container-managing-service/rest-service/src/main/resources/config.properties
 create mode 100644 fda-database-managing-service/rest-service/src/main/resources/config.properties
 create mode 100644 fda-discovery-server/src/main/resources/config.properties
 create mode 100644 fda-gateway-service/src/main/resources/config.properties
 create mode 100644 fda-query-service/rest-service/src/main/resources/config.properties
 create mode 100644 fda-table-service/rest-service/src/main/resources/config.properties

diff --git a/docker-compose.yml b/docker-compose.yml
index 22510bd96d..3a33e9c133 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -7,11 +7,9 @@ services:
     hostname: fda-discovery-server
     build: ./fda-discovery-server
     image: fda-discovery-server
-    environment:
-      SPRING_PROFILES_ACTIVE: docker
+    #environment:
+    #  SPRING_PROFILES_ACTIVE: docker
     network_mode: bridge
-    expose:
-      - 9090
     ports:
       - 9090:9090
 
@@ -21,10 +19,8 @@ services:
     build: ./fda-gateway-service
     image: fda-gateway-service
     network_mode: bridge
-    environment:
-      SPRING_PROFILES_ACTIVE: docker
-    expose:
-      - 9095
+    #environment:
+    #  SPRING_PROFILES_ACTIVE: docker
     ports:
       - 9095:9095
     links:
@@ -49,10 +45,8 @@ services:
       context: ./fda-database-managing-service
     image: fda-database-managing-service
     network_mode: bridge
-    environment:
-      SPRING_PROFILES_ACTIVE: docker
-    expose:
-      - 9092
+    #environment:
+    #  SPRING_PROFILES_ACTIVE: docker
     ports:
       - 9092:9092
     links:
@@ -70,10 +64,8 @@ services:
     build: ./fda-container-managing-service
     image: fda-container-managing-service
     network_mode: bridge
-    environment:
-      SPRING_PROFILES_ACTIVE: docker
-    expose:
-      - 9091
+    #environment:
+    #  SPRING_PROFILES_ACTIVE: docker
     ports:
       - 9091:9091
     volumes:
@@ -91,10 +83,8 @@ services:
     build: ./fda-query-service
     image: fda-query-service
     network_mode: bridge
-    environment:
-      SPRING_PROFILES_ACTIVE: docker
-    expose:
-      - 9093
+    #environment:
+    #  SPRING_PROFILES_ACTIVE: docker
     ports:
       - 9093:9093
     volumes:
@@ -115,10 +105,8 @@ services:
     image: fda-table-service
     network_mode: bridge
     environment:
-      SPRING_PROFILES_ACTIVE: docker
+    #  SPRING_PROFILES_ACTIVE: docker
       multipart.location: /tmp
-    expose:
-      - 9094
     ports:
       - 9094:9094
     volumes:
@@ -138,13 +126,11 @@ services:
     network_mode: bridge
     command: sh -c "/wait && flask run"
     environment:
-      - EUREKA_SERVER=http://fda-discovery-server:9090/eureka
-      - WAIT_HOSTS=fda-discovery-server:9090
-      - WAIT_HOSTS_TIMEOUT=300
-      - WAIT_SLEEP_INTERVAL=30
-      - WAIT_HOST_CONNECT_TIMEOUT=30
-    expose:
-      - 5000
+      EUREKA_SERVER: http://fda-discovery-server:9090/eureka
+      WAIT_HOSTS: fda-discovery-server:9090
+      WAIT_HOSTS_TIMEOUT: 300
+      WAIT_SLEEP_INTERVAL: 30
+      WAIT_HOST_CONNECT_TIMEOUT: 30
     ports:
       - 5000:5000
     volumes:
@@ -161,8 +147,6 @@ services:
     hostname: fda-ui
     build: ./fda-ui
     image: fda-ui
-    expose:
-      - 3000
     ports:
       - 3000:3000
     links:
diff --git a/fda-container-managing-service/Dockerfile b/fda-container-managing-service/Dockerfile
index 50fb583bfd..231bd8a475 100644
--- a/fda-container-managing-service/Dockerfile
+++ b/fda-container-managing-service/Dockerfile
@@ -2,13 +2,14 @@
 FROM maven:slim as build
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
-COPY ./api ./api
-COPY ./rest-service ./rest-service
-COPY ./services ./services
 COPY ./pom.xml ./
 
 RUN mvn -fn -B dependency:go-offline > /dev/null
 
+COPY ./api ./api
+COPY ./rest-service ./rest-service
+COPY ./services ./services
+
 RUN mvn -q clean package > /dev/null
 
 ###### SECOND STAGE ######
diff --git a/fda-container-managing-service/rest-service/src/main/resources/application-docker.properties b/fda-container-managing-service/rest-service/src/main/resources/application-docker.properties
index e2c5a77c39..408cd21f29 100644
--- a/fda-container-managing-service/rest-service/src/main/resources/application-docker.properties
+++ b/fda-container-managing-service/rest-service/src/main/resources/application-docker.properties
@@ -3,6 +3,7 @@ spring.application.name=fda-container-managing
 spring.main.banner-mode=off
 logging.level.root=warn
 logging.level.at.=info
-eureka.instance.hostname=fda-container-managing
-eureka.client.serviceUrl.defaultZone=http://fda-discovery-server:9090/eureka/
+logging.pattern.console="%d %highlight(%-5level): %msg%n"
+eureka.instance.hostname=fda-discovery-server
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
 eureka.instance.preferIpAddress=true
\ No newline at end of file
diff --git a/fda-container-managing-service/rest-service/src/main/resources/config.properties b/fda-container-managing-service/rest-service/src/main/resources/config.properties
new file mode 100644
index 0000000000..e993ed9c62
--- /dev/null
+++ b/fda-container-managing-service/rest-service/src/main/resources/config.properties
@@ -0,0 +1 @@
+# https://github.com/Netflix/Hystrix/issues/275
\ No newline at end of file
diff --git a/fda-database-managing-service/Dockerfile b/fda-database-managing-service/Dockerfile
index d99df42b89..ab1af5623e 100644
--- a/fda-database-managing-service/Dockerfile
+++ b/fda-database-managing-service/Dockerfile
@@ -2,13 +2,14 @@
 FROM maven:slim as build
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
+COPY ./pom.xml ./
+
+RUN mvn -fn -B dependency:go-offline > /dev/null
+
 COPY ./api ./api
 COPY ./gateways ./gateways
 COPY ./rest-service ./rest-service
 COPY ./services ./services
-COPY ./pom.xml ./
-
-RUN mvn -fn -B dependency:go-offline > /dev/null
 
 RUN mvn -q clean package > /dev/null
 
diff --git a/fda-database-managing-service/rest-service/src/main/resources/application-docker.properties b/fda-database-managing-service/rest-service/src/main/resources/application-docker.properties
index 3a47b57c45..9996d07cce 100644
--- a/fda-database-managing-service/rest-service/src/main/resources/application-docker.properties
+++ b/fda-database-managing-service/rest-service/src/main/resources/application-docker.properties
@@ -3,6 +3,7 @@ spring.application.name=fda-database-managing
 spring.main.banner-mode=off
 logging.level.root=warn
 logging.level.at.=info
-eureka.instance.hostname=fda-database-managing
-eureka.client.serviceUrl.defaultZone=http://fda-discovery-server:9090/eureka/
+logging.pattern.console="%d %highlight(%-5level): %msg%n"
+eureka.instance.hostname=fda-discovery-server
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
 eureka.instance.preferIpAddress=true
\ No newline at end of file
diff --git a/fda-database-managing-service/rest-service/src/main/resources/config.properties b/fda-database-managing-service/rest-service/src/main/resources/config.properties
new file mode 100644
index 0000000000..e993ed9c62
--- /dev/null
+++ b/fda-database-managing-service/rest-service/src/main/resources/config.properties
@@ -0,0 +1 @@
+# https://github.com/Netflix/Hystrix/issues/275
\ No newline at end of file
diff --git a/fda-discovery-server/Dockerfile b/fda-discovery-server/Dockerfile
index 9d48888895..c93c53ada9 100644
--- a/fda-discovery-server/Dockerfile
+++ b/fda-discovery-server/Dockerfile
@@ -2,11 +2,12 @@
 FROM maven:slim as build
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
-COPY ./src ./src
 COPY ./pom.xml ./
 
 RUN mvn -fn -B dependency:go-offline > /dev/null
 
+COPY ./src ./src
+
 RUN mvn -q clean package > /dev/null
 
 ###### SECOND STAGE ######
diff --git a/fda-discovery-server/src/main/resources/application-docker.properties b/fda-discovery-server/src/main/resources/application-docker.properties
index b4fc2cc7f2..eb2714535c 100644
--- a/fda-discovery-server/src/main/resources/application-docker.properties
+++ b/fda-discovery-server/src/main/resources/application-docker.properties
@@ -3,8 +3,9 @@ spring.application.name=fda-discovery-server
 spring.main.banner-mode=off
 logging.level.root=warn
 logging.level.at.=info
+logging.pattern.console="%d %highlight(%-5level): %msg%n"
 eureka.client.register-with-eureka=false
 eureka.client.fetch-registry=false
 eureka.instance.hostname=fda-discovery-server
-eureka.client.serviceUrl.defaultZone=http://fda-discovery-server:9090/eureka/
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
 eureka.instance.preferIpAddress=true
\ No newline at end of file
diff --git a/fda-discovery-server/src/main/resources/config.properties b/fda-discovery-server/src/main/resources/config.properties
new file mode 100644
index 0000000000..e993ed9c62
--- /dev/null
+++ b/fda-discovery-server/src/main/resources/config.properties
@@ -0,0 +1 @@
+# https://github.com/Netflix/Hystrix/issues/275
\ No newline at end of file
diff --git a/fda-gateway-service/Dockerfile b/fda-gateway-service/Dockerfile
index 57b0b7bde3..ff3ac66872 100644
--- a/fda-gateway-service/Dockerfile
+++ b/fda-gateway-service/Dockerfile
@@ -2,11 +2,12 @@
 FROM maven:slim as build
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
-COPY ./src ./src
 COPY ./pom.xml ./
 
 RUN mvn -fn -B dependency:go-offline > /dev/null
 
+COPY ./src ./src
+
 RUN mvn -q clean package > /dev/null
 
 ###### SECOND STAGE ######
diff --git a/fda-gateway-service/pom.xml b/fda-gateway-service/pom.xml
index 731f10f5f0..8432ad081d 100644
--- a/fda-gateway-service/pom.xml
+++ b/fda-gateway-service/pom.xml
@@ -26,7 +26,7 @@
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
+            <artifactId>spring-boot-starter-webflux</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
diff --git a/fda-gateway-service/src/main/java/at/tuwien/gatewayservice/config/WebConfig.java b/fda-gateway-service/src/main/java/at/tuwien/gatewayservice/config/WebConfig.java
index 1673c53b18..2b7b0d970b 100644
--- a/fda-gateway-service/src/main/java/at/tuwien/gatewayservice/config/WebConfig.java
+++ b/fda-gateway-service/src/main/java/at/tuwien/gatewayservice/config/WebConfig.java
@@ -1,14 +1,15 @@
 package at.tuwien.gatewayservice.config;
 
 import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.reactive.config.CorsRegistry;
+import org.springframework.web.reactive.config.WebFluxConfigurer;
 
 @Configuration
-public class WebConfig implements WebMvcConfigurer {
+public class WebConfig implements WebFluxConfigurer {
 
     @Override
     public void addCorsMappings(CorsRegistry registry) {
-        registry.addMapping("/**").allowedOrigins("*");
+        registry.addMapping("/**")
+                .allowedOrigins("*"); // FIXME
     }
 }
diff --git a/fda-gateway-service/src/main/resources/application-docker.properties b/fda-gateway-service/src/main/resources/application-docker.properties
index 052b0cd4cb..b3e8aacf58 100644
--- a/fda-gateway-service/src/main/resources/application-docker.properties
+++ b/fda-gateway-service/src/main/resources/application-docker.properties
@@ -4,5 +4,5 @@ spring.main.banner-mode=off
 logging.level.root=warn
 logging.level.at.=info
 logging.pattern.console="%d %highlight(%-5level): %msg%n"
-eureka.instance.hostname=fda-gateway-service
-eureka.client.serviceUrl.defaultZone=http://fda-discovery-server:9090/eureka/
\ No newline at end of file
+eureka.instance.hostname=fda-discovery-server
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
\ No newline at end of file
diff --git a/fda-gateway-service/src/main/resources/config.properties b/fda-gateway-service/src/main/resources/config.properties
new file mode 100644
index 0000000000..e993ed9c62
--- /dev/null
+++ b/fda-gateway-service/src/main/resources/config.properties
@@ -0,0 +1 @@
+# https://github.com/Netflix/Hystrix/issues/275
\ No newline at end of file
diff --git a/fda-query-service/Dockerfile b/fda-query-service/Dockerfile
index a51e7bc2ef..7c86e3e735 100644
--- a/fda-query-service/Dockerfile
+++ b/fda-query-service/Dockerfile
@@ -2,14 +2,15 @@
 FROM maven:slim as build
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
+COPY ./pom.xml ./
+
+RUN mvn -fn -B dependency:go-offline > /dev/null
+
 COPY ./api ./api
 COPY ./gateways ./gateways
 COPY ./persistence ./persistence
 COPY ./rest-service ./rest-service
 COPY ./services ./services
-COPY ./pom.xml ./
-
-RUN mvn -fn -B dependency:go-offline > /dev/null
 
 RUN mvn -q clean package > /dev/null
 
diff --git a/fda-query-service/rest-service/src/main/resources/application-docker.properties b/fda-query-service/rest-service/src/main/resources/application-docker.properties
index faabd241e5..270e11f593 100644
--- a/fda-query-service/rest-service/src/main/resources/application-docker.properties
+++ b/fda-query-service/rest-service/src/main/resources/application-docker.properties
@@ -3,5 +3,6 @@ spring.application.name=fda-query-service
 spring.main.banner-mode=off
 logging.level.root=warn
 logging.level.at.=info
-eureka.instance.hostname=fda-query-service
-eureka.client.serviceUrl.defaultZone=http://fda-discovery-server:9090/eureka/
+logging.pattern.console="%d %highlight(%-5level): %msg%n"
+eureka.instance.hostname=fda-discovery-server
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
diff --git a/fda-query-service/rest-service/src/main/resources/config.properties b/fda-query-service/rest-service/src/main/resources/config.properties
new file mode 100644
index 0000000000..e993ed9c62
--- /dev/null
+++ b/fda-query-service/rest-service/src/main/resources/config.properties
@@ -0,0 +1 @@
+# https://github.com/Netflix/Hystrix/issues/275
\ No newline at end of file
diff --git a/fda-table-service/Dockerfile b/fda-table-service/Dockerfile
index 8f12172844..9a9c4c854a 100644
--- a/fda-table-service/Dockerfile
+++ b/fda-table-service/Dockerfile
@@ -2,13 +2,14 @@
 FROM maven:slim as build
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
+COPY ./pom.xml ./
+
+RUN mvn -fn -B dependency:go-offline > /dev/null
+
 COPY ./api ./api
 COPY ./gateways ./gateways
 COPY ./rest-service ./rest-service
 COPY ./services ./services
-COPY ./pom.xml ./
-
-RUN mvn -fn -B dependency:go-offline > /dev/null
 
 RUN mvn -q clean package > /dev/null
 
diff --git a/fda-table-service/rest-service/src/main/resources/application-docker.properties b/fda-table-service/rest-service/src/main/resources/application-docker.properties
index 556c1e3dae..bcb6231943 100644
--- a/fda-table-service/rest-service/src/main/resources/application-docker.properties
+++ b/fda-table-service/rest-service/src/main/resources/application-docker.properties
@@ -3,8 +3,9 @@ spring.application.name=fda-table-service
 spring.main.banner-mode=off
 logging.level.root=warn
 logging.level.at.=info
-eureka.instance.hostname=fda-table-service
-eureka.client.serviceUrl.defaultZone=http://fda-discovery-server:9090/eureka/
+logging.pattern.console="%d %highlight(%-5level): %msg%n"
+eureka.instance.hostname=fda-discovery-server
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
 spring.servlet.multipart.max-file-size=50MB
 spring.servlet.multipart.max-request-size=50MB
 multipart.location=${java.io.tmpdir}
\ No newline at end of file
diff --git a/fda-table-service/rest-service/src/main/resources/config.properties b/fda-table-service/rest-service/src/main/resources/config.properties
new file mode 100644
index 0000000000..e993ed9c62
--- /dev/null
+++ b/fda-table-service/rest-service/src/main/resources/config.properties
@@ -0,0 +1 @@
+# https://github.com/Netflix/Hystrix/issues/275
\ No newline at end of file
-- 
GitLab