From 20a2a83be19b7fcafa2830edc37ffcfd18a9b928 Mon Sep 17 00:00:00 2001 From: Paulo Oliveira Date: Mon, 21 Apr 2025 14:40:21 +0100 Subject: [PATCH 1/4] docker: create image for spring application --- maven-spring/docker/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 maven-spring/docker/Dockerfile diff --git a/maven-spring/docker/Dockerfile b/maven-spring/docker/Dockerfile new file mode 100644 index 0000000..715e706 --- /dev/null +++ b/maven-spring/docker/Dockerfile @@ -0,0 +1,4 @@ +FROM eclipse-temurin:21.0.6_7-jre-alpine-3.21 +RUN mkdir /opt/app +COPY app.jar /opt/app +CMD ["java", "-jar", "/opt/app/app.jar"] From 5078ebc7addf5b09fb40b94dc17402fb02110097 Mon Sep 17 00:00:00 2001 From: Paulo Oliveira Date: Mon, 21 Apr 2025 14:40:50 +0100 Subject: [PATCH 2/4] docker: distinguish profiles for local run and docker environment --- .../src/main/resources/application-dev.yml | 16 ++++++++++++++++ maven-spring/src/main/resources/application.yml | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 maven-spring/src/main/resources/application-dev.yml diff --git a/maven-spring/src/main/resources/application-dev.yml b/maven-spring/src/main/resources/application-dev.yml new file mode 100644 index 0000000..56d6bb7 --- /dev/null +++ b/maven-spring/src/main/resources/application-dev.yml @@ -0,0 +1,16 @@ +spring: + application: + name: javaverse + + datasource: + url: jdbc:postgresql://localhost:5432/tasks + username: myuser + password: mypassword + driver-class-name: "org.postgresql.Driver" + + jpa: + hibernate: + ddl-auto: update + +server: + port: 5190 diff --git a/maven-spring/src/main/resources/application.yml b/maven-spring/src/main/resources/application.yml index 56d6bb7..9a73bc5 100644 --- a/maven-spring/src/main/resources/application.yml +++ b/maven-spring/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: javaverse datasource: - url: jdbc:postgresql://localhost:5432/tasks + url: jdbc:postgresql://db:5432/tasks username: myuser password: mypassword driver-class-name: "org.postgresql.Driver" From 5af88c0a9bca24c409026694b84f264ed1ebe8f8 Mon Sep 17 00:00:00 2001 From: Paulo Oliveira Date: Mon, 21 Apr 2025 14:41:09 +0100 Subject: [PATCH 3/4] docker: facilitate the docker image creation --- maven-spring/docker/build.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 maven-spring/docker/build.sh diff --git a/maven-spring/docker/build.sh b/maven-spring/docker/build.sh new file mode 100644 index 0000000..c82c83e --- /dev/null +++ b/maven-spring/docker/build.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# Working directory +CWD="../" +echo " Building JavaVerse with context: ${CWD}" + +# Retrieve the Project version with mvn +VERSION=$(xmllint --xpath 'string(//*[local-name()="project"]/*[local-name()="version"])' "${CWD}pom.xml") +echo "Suggested version: ${VERSION}" + +# Create JAR +mvn clean package -DskipTests -q -f "${CWD}pom.xml" +echo "Create JAR artifact" + +# Copy artifact +cp "${CWD}target/"*.jar app.jar + +# Build Docker image +docker build -t javaverse-tasks:"$VERSION" . +echo "Image created" + +rm -f "app.jar" +echo "Clean up JAR artifact" \ No newline at end of file From 7fda2aee6b2aec64cf8c8c9f350b828906e19c00 Mon Sep 17 00:00:00 2001 From: Paulo Oliveira Date: Mon, 21 Apr 2025 14:41:24 +0100 Subject: [PATCH 4/4] docker: update docker compose --- maven-spring/docker/docker-compose.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/maven-spring/docker/docker-compose.yml b/maven-spring/docker/docker-compose.yml index 7661679..59a9a4b 100644 --- a/maven-spring/docker/docker-compose.yml +++ b/maven-spring/docker/docker-compose.yml @@ -7,9 +7,20 @@ services: # @TODO connect all + # Run javaverse image connect with database + javaverse: + image: javaverse-tasks:0.0.1 + environment: + - DATABASE_URL=postgresql://db:5432/tasks + ports: + - "5190:5190" + depends_on: + db: + condition: service_healthy + + db: image: postgres:17.4-alpine3.21 - container_name: postgres environment: POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword @@ -18,6 +29,11 @@ services: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U myuser -d tasks" ] + interval: 10s + timeout: 5s + retries: 5 volumes: postgres_data: