diff --git a/.gitignore b/.gitignore index 9c7122abfa7caef476a8ff05914783b4a0ec64dd..9f401977eeaecf70be6c5670806dafa033855880 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea* *.iml -target* +target/ +src/docker/run/config/ .DS_Store .m2 *.jar diff --git a/build.sh b/build.sh index e29e8d77076c421f9f0a98bc49d4d61b9454c2bd..cf8f6c9e9da5022c9ae8bc83c73e12751e81153c 100755 --- a/build.sh +++ b/build.sh @@ -2,4 +2,4 @@ ./halt.sh docker-compose -f ./docker-compose_build.yml build -docker-compose -f ./docker-compose_build.yml run --rm backend_build +docker-compose -f ./docker-compose_build.yml run --rm portal-backend-build diff --git a/captain.yml b/captain.yml index 22489d059ef6c710a9435a2dfe3b0d96ec592e76..05f503caca3a3241ae573bd0c0b7024bb5910979 100644 --- a/captain.yml +++ b/captain.yml @@ -1,22 +1,24 @@ -backend-build: +portal-backend-build: build: ./src/docker/build/Dockerfile image: hbpmip/portal-backend-build pre: - - echo 'Building backend-build' + - echo 'Building portal-backend-build' post: - - docker run --rm -v $(pwd):/opt/portal/ -v $(pwd)/.m2:/root/.m2/ hbpmip/backend-build - - echo 'Finished building backend-build' + - docker run --rm -v $(pwd):/opt/portal/ -v $(pwd)/.m2:/root/.m2/ hbpmip/portal-backend-build + - echo 'Finished building portal-backend-build' test: - tests.sh -backend: +portal-backend: build: ./src/docker/run/Dockerfile image: hbpmip/portal-backend pre: - - echo 'Building backend' - - cp -r $(pwd)/target $(pwd)/src/docker/run/target/ + - echo 'Building portal-backend' + - 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/ - - echo 'Finished building backend' + - rm -r $(pwd)/src/docker/run/config/ + - echo 'Finished building portal-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 0000000000000000000000000000000000000000..ef4b18fb46b10b4187082b28ed1c92dd7c1f9fe3 --- /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 ca9461e4de83255ad5d6b13d3ecb1698e79bcd78..7cff1602518030afd78ccbe333e414b682717663 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,21 +1,40 @@ version: '2' services: - backend: - container_name: backend + portal-backend: + container_name: portal-backend build: context: . dockerfile: ./src/docker/run/Dockerfile depends_on: - - "db" + - "portal-db" ports: - "8080:8080" links: - - "db" + - "portal-db" volumes: - ./config:/config - db: - container_name: db + 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 + + portal-db: + container_name: portal-db image: postgres:9.5.3 ports: - "5432:5432" diff --git a/docker-compose_build.yml b/docker-compose_build.yml index b29bf59ecd0f6a068269bcc0fed3f0498bb9505d..11fc3383775089d2b5d0c4ca2866931b1783aa28 100644 --- a/docker-compose_build.yml +++ b/docker-compose_build.yml @@ -1,8 +1,8 @@ version: '2' services: - backend_build: - container_name: backend_build + portal-backend-build: + container_name: portal-backend-build build: ./src/docker/build/ volumes: - ./:/opt/portal/ diff --git a/run.sh b/run.sh index 5d9339d5dd5ee1458a5d47d420904917ac0cef13..77e2a550d55ae36f2e1f2df8e23e093ff0f9099b 100755 --- a/run.sh +++ b/run.sh @@ -1,12 +1,12 @@ #!/usr/bin/env bash docker-compose build -docker-compose up -d db +docker-compose up -d portal-db echo 'Waiting for database to be ready...' -until [ $(docker-compose exec db psql -U postgres -c "\q" | wc -l) -eq 0 ]; do +until [ $(docker-compose exec portal-db psql -U postgres -c "\q" | wc -l) -eq 0 ]; do printf '.' sleep 1 done -docker-compose up -d backend +docker-compose up -d portal-backend diff --git a/src/docker/run/Dockerfile b/src/docker/run/Dockerfile index 55f78f0aea243a722b90ac0b6c662ab7aa75e4f2..f9c7d30b090aac13ba320651e1d6c97fe39d5662 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 4814eb9e11f657e89133218e9d21622ad215eaf8..51fd6f3ea36b5e273d70adc99e09659dd8e983b9 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;