diff --git a/build.gradle b/build.gradle index 5615c42..95fe1cc 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,11 @@ ext { scalaVersion = "2.12.6" } +allprojects { + group = 'com.lbs' + version = '1.0.0-SNAPSHOT' +} + apply plugin: 'idea' subprojects { diff --git a/docker.sh b/docker.sh new file mode 100755 index 0000000..de403d3 --- /dev/null +++ b/docker.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +[ -z "$TELEGRAM_TOKEN" ] && echo "Need to set TELEGRAM_TOKEN env variable" && exit 1; +[ -z "$SECURITY_SECRET" ] && echo "Need to set SECURITY_SECRET env variable" && exit 1; + +case "$1" in +run) + ./gradlew makeDockerFile + docker-compose -f server/build/docker/docker-compose.yml up --build +;; +*) + echo "Run as $0 (run)" + exit 1 +;; +esac \ No newline at end of file diff --git a/server/build.gradle b/server/build.gradle index 8357536..86c1e83 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -1,3 +1,5 @@ +import org.apache.tools.ant.filters.ReplaceTokens + buildscript { ext { springBootVersion = '2.0.2.RELEASE' @@ -30,4 +32,23 @@ dependencies { testCompile('com.typesafe.akka:akka-testkit_2.12:2.4.19') } +task replaceTokens(type: Copy) { + def finalBuildName = project.name + '-' + project.version + + from 'src/main/docker' + into 'build/docker' + filter(ReplaceTokens, tokens: + ['project.build.finalName': finalBuildName, + "TELEGRAM_TOKEN" : System.getenv()['TELEGRAM_TOKEN'], + "SECURITY_SECRET" : System.getenv()['SECURITY_SECRET'] + ]) +} + +task copyJar(type: Copy) { + dependsOn assemble + from file("${project.buildDir}/libs") + into file("${project.buildDir}/docker") +} + +task makeDockerFile(type: Copy, dependsOn: [replaceTokens, copyJar]) diff --git a/server/src/main/docker/.env b/server/src/main/docker/.env new file mode 100644 index 0000000..78d5718 --- /dev/null +++ b/server/src/main/docker/.env @@ -0,0 +1,2 @@ +TELEGRAM_TOKEN=@TELEGRAM_TOKEN@ +SECURITY_SECRET=@SECURITY_SECRET@ \ No newline at end of file diff --git a/server/src/main/docker/Dockerfile b/server/src/main/docker/Dockerfile new file mode 100644 index 0000000..81da40c --- /dev/null +++ b/server/src/main/docker/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:8-jdk-alpine + +RUN apk update && apk upgrade && apk add netcat-openbsd +RUN mkdir -p /usr/local/luxmedbookingservice +ADD @project.build.finalName@.jar /usr/local/luxmedbookingservice/ +ADD run.sh run.sh +RUN chmod +x run.sh +CMD ./run.sh \ No newline at end of file diff --git a/server/src/main/docker/docker-compose.yml b/server/src/main/docker/docker-compose.yml new file mode 100644 index 0000000..53c1efc --- /dev/null +++ b/server/src/main/docker/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3' +services: + luxmedbookingservice: + build: . + environment: + TELEGRAM_TOKEN: ${TELEGRAM_TOKEN} + SECURITY_SECRET: ${SECURITY_SECRET} + volumes: + - ./log:/usr/local/luxmedbookingservice/log + database: + image: postgres:9.5 + ports: + - "5432:5432" + environment: + - POSTGRES_USER=lbs + - POSTGRES_PASSWORD=lsb123 + - POSTGRES_DB=lbs \ No newline at end of file diff --git a/server/src/main/docker/run.sh b/server/src/main/docker/run.sh new file mode 100644 index 0000000..a03a22a --- /dev/null +++ b/server/src/main/docker/run.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +echo "********************************************************" +echo "Waiting for the database server to start on port 5432" +echo "********************************************************" +while ! `nc -z database 5432`; do sleep 3; done +echo "******** Database Server has started " + +echo "********************************************************" +echo "Starting Luxmed Booking Service " +echo "********************************************************" +cd /usr/local/luxmedbookingservice && java -jar @project.build.finalName@.jar diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index 79d42ce..126b673 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: datasource: - url: "jdbc:postgresql://127.0.0.1:5432/lbs" + url: "jdbc:postgresql://database:5432/lbs" username: "lbs" password: "lsb123" jpa: @@ -18,7 +18,7 @@ banner: location: "classpath:/banner.txt" logging: - file: logs/app.log + file: log/app.log level: com.lbs: DEBUG # org.hibernate.SQL: DEBUG