From c13255ffe9c2796a0dca936a55cc65cc12ce5cc4 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Mon, 18 Jul 2016 11:02:59 +0200
Subject: [PATCH] use dockerize to get config from environment variables
 instead of config file

---
 captain.yml                                   |  4 +-
 config/application.tmpl                       | 50 +++++++++++++++++++
 docker-compose.yml                            | 19 +++++++
 src/docker/run/Dockerfile                     | 12 +++--
 src/main/java/org/hbp/mip/MIPApplication.java |  1 -
 5 files changed, 81 insertions(+), 5 deletions(-)
 create mode 100644 config/application.tmpl

diff --git a/captain.yml b/captain.yml
index 22489d059..a174331e5 100644
--- a/captain.yml
+++ b/captain.yml
@@ -14,9 +14,11 @@ backend:
   image: hbpmip/portal-backend
   pre:
     - echo 'Building backend'
-    - cp -r $(pwd)/target $(pwd)/src/docker/run/target/
+    - cp -r $(pwd)/config/ $(pwd)/src/docker/run/config/
+    - cp -r $(pwd)/target/ $(pwd)/src/docker/run/target/
   post:
     - rm -r $(pwd)/src/docker/run/target/
+    - rm -r $(pwd)/src/docker/run/config/
     - echo 'Finished building backend'
   test:
     - tests.sh
\ No newline at end of file
diff --git a/config/application.tmpl b/config/application.tmpl
new file mode 100644
index 000000000..ef4b18fb4
--- /dev/null
+++ b/config/application.tmpl
@@ -0,0 +1,50 @@
+# Configuration for the portal running inside a Docker container
+
+spring:
+  datasource:
+    url: {{ .Env.DB_URL }}
+    username: {{ .Env.DB_USER }}
+    password: {{ .Env.DB_PASS }}
+    driver-class-name: org.postgresql.Driver
+  jpa:
+    hibernate:
+      dialect: org.hibernate.dialect.PostgreSQL9Dialect
+  resources:
+      chain:
+        enabled: true
+
+security:
+  enabled: false
+
+hbp:
+  client:
+    clientId: {{ .Env.CLIENT_ID }}
+    clientSecret: {{ .Env.CLIENT_SECRET }}
+    accessTokenUri: {{ .Env.TOKEN_URI }}
+    userAuthorizationUri: {{ .Env.AUTH_URI }}
+    tokenName: oauth_token
+    authenticationScheme: query
+    clientAuthenticationScheme: form
+  resource:
+    userInfoUri: {{ .Env.USER_INFO_URI }}
+
+logging:
+  level:
+    org.springframework.security: {{ .Env.LOGGING_LEVEL }}
+
+server:
+  contextPath: {{ .Env.CONTEXT_PATH }}
+  port: {{ .Env.PORT }}
+  use-forward-headers: true
+  session:
+    timeout: {{ .Env.SESSION_TIMEOUT }}
+
+workflow:
+  experimentUrl: {{ .Env.EXPERIMENT_URL }}
+  listMethodsUrl: {{ .Env.LIST_METHODS_URL }}
+  miningMipUrl: {{ .Env.ML_URL }}
+  miningExaremeUrl: {{ .Env.EXAREME_URL }}
+
+frontend:
+  redirect:
+    url: {{ .Env.FRONTEND_REDIRECT_URL }}
diff --git a/docker-compose.yml b/docker-compose.yml
index ca9461e4d..0f668a645 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -14,6 +14,25 @@ services:
       - "db"
     volumes:
       - ./config:/config
+    environment:
+      DB_URL: jdbc:postgresql://172.22.0.1:5432/postgres
+      DB_USER: postgres
+      DB_PASS: pass
+      CLIENT_ID: 996f97c5-a3ca-460e-b18b-00df3e2be89a
+      CLIENT_SECRET: aD0Tueb3KkNkcZqZgQbNyDWgnM95IfZ0xPCQ_6Z9dQNHXY00RIrnAD_m7sNJh1oofYSX8aHkl72MkwI0K626Ug
+      TOKEN_URI: https://services.humanbrainproject.eu/oidc/token
+      AUTH_URI: https://services.humanbrainproject.eu/oidc/authorize
+      USER_INFO_URI: https://services.humanbrainproject.eu/oidc/userinfo
+      LOGGING_LEVEL: DEBUG
+      CONTEXT_PATH: /services
+      PORT: 8080
+      SESSION_TIMEOUT: 2592000
+      EXPERIMENT_URL: http://172.22.0.1:8087/experiment
+      LIST_METHODS_URL: http://172.22.0.1:8087/list-methods
+      ML_URL: http://172.22.0.1:8087/mining
+      EXAREME_URL: http://hbps2.chuv.ch:9090/mining/query
+      FRONTEND_REDIRECT_URL: http://frontend/home
+
   db:
     container_name: db
     image: postgres:9.5.3
diff --git a/src/docker/run/Dockerfile b/src/docker/run/Dockerfile
index 55f78f0ae..f9c7d30b0 100644
--- a/src/docker/run/Dockerfile
+++ b/src/docker/run/Dockerfile
@@ -1,6 +1,12 @@
 FROM java:openjdk-8u92-jdk-alpine
 
-VOLUME /config
-
 COPY ./target/backend-services-DOCKER_BUILD.jar backend.jar
-CMD ["java", "-jar", "backend.jar"]
+
+RUN apk add --update ca-certificates wget &&  rm -rf /var/cache/apk/* /tmp/* && update-ca-certificates
+RUN wget https://github.com/jwilder/dockerize/releases/download/v0.2.0/dockerize-linux-amd64-v0.2.0.tar.gz
+RUN tar -C /usr/local/bin -xvzf dockerize-linux-amd64-v0.2.0.tar.gz
+
+CMD mkdir /config
+ADD ./config/application.tmpl /config/application.tmpl
+
+CMD dockerize -template /config/application.tmpl:/config/application.yml java -jar backend.jar
diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java
index 4814eb9e1..51fd6f3ea 100644
--- a/src/main/java/org/hbp/mip/MIPApplication.java
+++ b/src/main/java/org/hbp/mip/MIPApplication.java
@@ -1,6 +1,5 @@
 /**
  * Created by mirco on 04.12.15.
- * Based on gregturn code at : 'https://github.com/spring-guides/tut-spring-boot-oauth2'.
  */
 
 package org.hbp.mip;
-- 
GitLab