From 7736f9abfc92b5c1863a94110629c41ea9fa1e12 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 29 Aug 2020 21:42:36 +0200 Subject: [PATCH] Docker implementation --- Dockerfile | 5 +++++ README.md | 4 +++- build.gradle | 9 +++++++++ docker-compose.yml | 15 +++++++++++++++ src/main/resources/banner.png | Bin 0 -> 34048 bytes 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 src/main/resources/banner.png diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ce00bd4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM bellsoft/liberica-openjdk-alpine +EXPOSE 8889 +RUN mkdir -p /app/ +ADD build/libs/webquizengine.jar /app/webquizengine.jar +ENTRYPOINT ["java", "-jar", "/app/webquizengine.jar"] \ No newline at end of file diff --git a/README.md b/README.md index d58368b..fd6713d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # WebQuizEngine -Spring Boot web service to create and solve quizzes using a REST API. +Spring Boot web service to create and solve quizzes via REST API using Docker as deployment tool. + +![](src/main/resources/banner.png) ## Register user To register a new user send a JSON with `email` and `password` via `POST` request to `/api/register`: ``` json diff --git a/build.gradle b/build.gradle index 3e67c2f..1291253 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,15 @@ apply plugin: 'io.spring.dependency-management' sourceCompatibility = '11' +task fullJar(type: Jar) { + manifest { + attributes 'Implementation-Title': 'WebQuizEngine Jar File', + 'Main-Class': 'org.hyperskill.webquiz.engine.WebQuizEngine' + } + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + with jar +} + repositories { mavenCentral() } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ed516b0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +# Docker Compose file Reference (https://docs.docker.com/compose/compose-file/) + +version: '3.8' + +# Define services +services: + # Engine service + engine: + # Configuration for building the docker image for the engine service + build: + context: ./ # Use an image built from the specified dockerfile in the root directory. + dockerfile: Dockerfile + ports: + - "8889:8889" # Forward the exposed port 8889 on the container to port 8889 on the host machine + restart: always \ No newline at end of file diff --git a/src/main/resources/banner.png b/src/main/resources/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..66d4a6ac4bfa291fb405ebe06232600e2b70311e GIT binary patch literal 34048 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 &o0ZTIYhZ@?nU4su>#3GXxr+E`;Ml==&0dHQ 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 literal 0 HcmV?d00001