From df8b379b457c50b6ba6fb54dfb334919707bbd48 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Tue, 12 Jul 2016 11:37:43 +0200
Subject: [PATCH] link database

---
 build.sh                            |  3 ++-
 config/application.yml              |  4 ++--
 docker-compose.yml                  | 13 +++++++++++++
 docker-compose_build.yml            | 13 +++++++++++++
 pom.xml                             |  2 ++
 src/docker/build/Dockerfile         |  2 ++
 src/docker/build/build-in-docker.sh |  8 ++++++++
 7 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/build.sh b/build.sh
index 943044203..a89fb3a62 100755
--- a/build.sh
+++ b/build.sh
@@ -2,4 +2,5 @@
 
 ./halt.sh
 docker-compose -f ./docker-compose_build.yml build
-docker-compose -f ./docker-compose_build.yml up
+docker-compose -f ./docker-compose_build.yml up -d
+docker-compose stop db
\ No newline at end of file
diff --git a/config/application.yml b/config/application.yml
index f1470a8e9..2750ccff0 100644
--- a/config/application.yml
+++ b/config/application.yml
@@ -2,9 +2,9 @@
 
 spring:
   datasource:
-    url: jdbc:postgresql://portaldb:5432/postgres
+    url: jdbc:postgresql://db:5432/postgres
     username: postgres
-    password: test
+    password: pass
     driver-class-name: org.postgresql.Driver
   jpa:
     hibernate:
diff --git a/docker-compose.yml b/docker-compose.yml
index 3902ae28d..df1c7f0bf 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,5 +6,18 @@ services:
     build:
       context: .
       dockerfile: ./src/docker/run/Dockerfile
+    depends_on:
+      - "db"
     ports:
       - "8080:8080"
+    links:
+      - "db"
+  db:
+      container_name: db
+      image: postgres:9.5.3
+      ports:
+        - "5432:5432"
+      volumes:
+        - ./data:/var/lib/postgres/data
+      environment:
+        POSTGRES_USER: postgres
diff --git a/docker-compose_build.yml b/docker-compose_build.yml
index b29bf59ec..877c4ebf3 100644
--- a/docker-compose_build.yml
+++ b/docker-compose_build.yml
@@ -4,8 +4,21 @@ services:
   backend_build:
     container_name: backend_build
     build: ./src/docker/build/
+    depends_on:
+      - "db"
     volumes:
       - ./:/opt/portal/
       - .m2:/root/.m2/
     ports:
       - "8080:8080"
+    links:
+      - "db"
+  db:
+    container_name: db
+    image: postgres:9.5.3
+    ports:
+      - "5432:5432"
+    volumes:
+      - ./data:/var/lib/postgres/data
+    environment:
+      POSTGRES_USER: postgres
diff --git a/pom.xml b/pom.xml
index f0a335858..e89986f5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,8 @@
         <sonar.host.url>http://dockerhost:9000</sonar.host.url>
         <sonar.projectName>MIP Backend</sonar.projectName>
         <sonar.sources>src/main/java/</sonar.sources>
+        <flyway.url>jdbc:postgresql://db:5432/postgres</flyway.url>
+        <flyway.user>postgres</flyway.user>
     </properties>
 
     <dependencies>
diff --git a/src/docker/build/Dockerfile b/src/docker/build/Dockerfile
index b4318d788..b9164761d 100644
--- a/src/docker/build/Dockerfile
+++ b/src/docker/build/Dockerfile
@@ -5,4 +5,6 @@ COPY ./build-in-docker.sh /build-in-docker.sh
 VOLUME /opt/portal/
 WORKDIR /opt/portal/
 
+RUN apt-get update && apt-get install -y postgresql
+
 CMD ["bash", "/build-in-docker.sh"]
diff --git a/src/docker/build/build-in-docker.sh b/src/docker/build/build-in-docker.sh
index a6f31bcc3..70736859a 100644
--- a/src/docker/build/build-in-docker.sh
+++ b/src/docker/build/build-in-docker.sh
@@ -3,5 +3,13 @@
 rm -r target/
 mvn package
 
+echo 'Waiting for postgres to be ready...'
+until psql -h "db" -U "postgres" -c '\l'; do
+  >&2 echo "Postgres is unavailable - sleeping"
+  sleep 1
+done
+
+mvn flyway:baseline flyway:migrate
+
 # Uncomment to generate a PDF API documentation
 # mvn swagger2markup:convertSwagger2markup asciidoctor:process-asciidoc
-- 
GitLab