diff --git a/Dockerfile b/Dockerfile index 6faf956f159d1ae5bb739283c106eb2d9ceae269..f7927e2fff38f5af18dfb8145f2f7bd4017ecc85 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,10 @@ -# This Dockerfile encapsulate the MIP portal backend application for development purposes. +# This Dockerfile encapsulate the MIP portal backend application for development purposes. +# We use it to bootstrap the generation of the Hibernate mapping file and the application jar. FROM maven:3-jdk-8 -RUN apt-get update && apt-get install -y wget -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 -xzvf dockerize-linux-amd64-v0.2.0.tar.gz +COPY ./src/docker/init/build-in-docker.sh /build-in-docker.sh -RUN mkdir -p /opt/portal/ \ - && echo -n "#!/bin/sh\n/usr/bin/java -DconfigFile=/opt/portal/config/portal.properties -jar /opt/portal/lib/mip.jar" > /opt/portal/mip.sh \ - && chmod +x /opt/portal/mip.sh -EXPOSE 8080 +VOLUME /portal/ -VOLUME /opt/portal/config/ -VOLUME /opt/portal/lib/ - -WORKDIR /opt/portal/ - -CMD ["/usr/local/bin/dockerize", "-wait", "tcp://portaldb:5432", "/opt/portal/mip.sh"] +CMD ["/build-in-docker.sh"] diff --git a/build.sh b/build.sh index 70d44580f727cf609ce37e1242ec8e1590381da1..c468fde19796460203a36c70b2d786f485886a4e 100755 --- a/build.sh +++ b/build.sh @@ -1,8 +1,13 @@ #!/bin/bash -e if groups $USER | grep &>/dev/null '\bdocker\b'; then - CAPTAIN="captain" + DOCKER_COMPOSE="docker-compose" else - CAPTAIN="sudo captain" + DOCKER_COMPOSE="sudo docker-compose" fi -$CAPTAIN build +$DOCKER_COMPOSE --file=docker-compose.init.yml --project-name=portal-backend-init up + +echo "Need to set the current user as owner of the files generated in target directory..." +sudo chown -R $USER:$USER ./target + +echo "Done" diff --git a/captain.yml b/captain.yml deleted file mode 100644 index 26ede42e0551060fb31f6c6a7297cde79c20ac75..0000000000000000000000000000000000000000 --- a/captain.yml +++ /dev/null @@ -1,9 +0,0 @@ -portal-backend: - build: Dockerfile - image: portal-backend - pre: - - echo "Build portal-backend" - - docker-compose up -d portaldb - - mvn package - post: - - echo "Finished building portal-backend" diff --git a/docker-compose.init.yml b/docker-compose.init.yml new file mode 100644 index 0000000000000000000000000000000000000000..6a59c3a35389eceee522789ce05f2a07bf3942d8 --- /dev/null +++ b/docker-compose.init.yml @@ -0,0 +1,20 @@ +# Build the application and regenerate the Hibernate mapping + +portaldb: + image: postgres:9.4.5 + container_name: portaldb + ports: + - "55432:5432" + volumes: + - ./src/test/db/sql:/docker-entrypoint-initdb.d/ + environment: + POSTGRES_PASSWORD: test + +portal-backend: + build: . + volumes: + - ./:/portal/ + links: + - portaldb + ports: + - "8080:8080" diff --git a/docker-compose.yml b/docker-compose.yml index 63763938188058f08179e90228b87254c2ca6b30..95bec5bc97ca43e33fec832b98764914b84393fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ portaldb: image: postgres:9.4.5 + container_name: portaldb ports: - "55432:5432" volumes: @@ -9,7 +10,7 @@ portaldb: POSTGRES_PASSWORD: test portal-backend: - build: . + build: .src/docker/build volumes: - ./src/test/docker/:/opt/portal/config/ - ./target/:/opt/portal/lib/ diff --git a/src/docker/build/Dockerfile b/src/docker/build/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..6faf956f159d1ae5bb739283c106eb2d9ceae269 --- /dev/null +++ b/src/docker/build/Dockerfile @@ -0,0 +1,19 @@ +# This Dockerfile encapsulate the MIP portal backend application for development purposes. + +FROM maven:3-jdk-8 + +RUN apt-get update && apt-get install -y wget +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 -xzvf dockerize-linux-amd64-v0.2.0.tar.gz + +RUN mkdir -p /opt/portal/ \ + && echo -n "#!/bin/sh\n/usr/bin/java -DconfigFile=/opt/portal/config/portal.properties -jar /opt/portal/lib/mip.jar" > /opt/portal/mip.sh \ + && chmod +x /opt/portal/mip.sh +EXPOSE 8080 + +VOLUME /opt/portal/config/ +VOLUME /opt/portal/lib/ + +WORKDIR /opt/portal/ + +CMD ["/usr/local/bin/dockerize", "-wait", "tcp://portaldb:5432", "/opt/portal/mip.sh"] diff --git a/src/docker/init/build-in-docker.sh b/src/docker/init/build-in-docker.sh new file mode 100755 index 0000000000000000000000000000000000000000..aff4c2e6c8eaabb623c62b16339b0dde606ead82 --- /dev/null +++ b/src/docker/init/build-in-docker.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +echo ">>> Building inside Docker" +cd /portal + +mvn package + +echo ">>> Press Ctrl+C to stop, build is complete"