mirror of
https://github.com/pcvolkmer/etl-processor.git
synced 2025-04-19 17:26:51 +00:00
feat: add Dockerfile for build within docker environment and run application within a container.
This commit is contained in:
parent
db631fbd8e
commit
a075f73162
36
Dockerfile
Normal file
36
Dockerfile
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
FROM gradle:8.1-jdk17 AS build
|
||||||
|
WORKDIR /home/gradle/src
|
||||||
|
ENV GRADLE_USER_HOME /gradle
|
||||||
|
|
||||||
|
COPY build.gradle.kts settings.gradle.kts ./
|
||||||
|
|
||||||
|
COPY --chown=gradle:gradle . .
|
||||||
|
RUN gradle build --info && \
|
||||||
|
java -Djarmode=layertools -jar build/libs/*.jar extract
|
||||||
|
|
||||||
|
FROM gcr.io/distroless/java17:nonroot
|
||||||
|
WORKDIR /opt/kafka-streams-template
|
||||||
|
COPY --from=build /home/gradle/src/dependencies/ ./
|
||||||
|
COPY --from=build /home/gradle/src/spring-boot-loader/ ./
|
||||||
|
COPY --from=build /home/gradle/src/application/ ./
|
||||||
|
COPY HealthCheck.java .
|
||||||
|
|
||||||
|
USER nonroot
|
||||||
|
ARG GIT_REF=""
|
||||||
|
ARG GIT_URL=""
|
||||||
|
ARG BUILD_TIME=""
|
||||||
|
ARG VERSION=0.0.0
|
||||||
|
ENV APP_VERSION=${VERSION} \
|
||||||
|
SPRING_PROFILES_ACTIVE="prod"
|
||||||
|
ENTRYPOINT ["java", "-XX:MaxRAMPercentage=90", "org.springframework.boot.loader.JarLauncher"]
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=25s --timeout=3s --retries=2 CMD ["java", "HealthCheck.java", "||", "exit", "1"]
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.created=${BUILD_TIME} \
|
||||||
|
org.opencontainers.image.authors="Paul-Chrisitan Volkmer, Jakub Lidke" \
|
||||||
|
org.opencontainers.image.source=${GIT_URL} \
|
||||||
|
org.opencontainers.image.version=${VERSION} \
|
||||||
|
org.opencontainers.image.revision=${GIT_REF} \
|
||||||
|
org.opencontainers.image.vendor="" \
|
||||||
|
org.opencontainers.image.title="etl-processor" \
|
||||||
|
org.opencontainers.image.description="Relay application between Onkostar and bwHc for pseudonymization or anonymization of patient data and profide additional monitoring of processed data."
|
20
HealthCheck.java
Normal file
20
HealthCheck.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.http.HttpClient;
|
||||||
|
import java.net.http.HttpRequest;
|
||||||
|
import java.net.http.HttpResponse.BodyHandlers;
|
||||||
|
|
||||||
|
public class HealthCheck {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws InterruptedException, IOException {
|
||||||
|
var client = HttpClient.newHttpClient();
|
||||||
|
var request = HttpRequest.newBuilder()
|
||||||
|
.uri(URI.create("http://localhost:8001/actuator/health"))
|
||||||
|
.header("accept", "application/json")
|
||||||
|
.build();
|
||||||
|
var response = client.send(request, BodyHandlers.ofString());
|
||||||
|
if (response.statusCode() != 200 || !response.body().contains("UP")) {
|
||||||
|
throw new RuntimeException("Healthcheck failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
war
|
|
||||||
id("org.springframework.boot") version "3.1.1"
|
id("org.springframework.boot") version "3.1.1"
|
||||||
id("io.spring.dependency-management") version "1.1.0"
|
id("io.spring.dependency-management") version "1.1.0"
|
||||||
kotlin("jvm") version "1.9.0"
|
kotlin("jvm") version "1.9.0"
|
||||||
@ -28,6 +27,10 @@ repositories {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.getByName<Jar>("jar") {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
|
||||||
@ -47,7 +50,6 @@ dependencies {
|
|||||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||||
developmentOnly("org.springframework.boot:spring-boot-docker-compose")
|
developmentOnly("org.springframework.boot:spring-boot-docker-compose")
|
||||||
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
|
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
|
||||||
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
|
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||||
testImplementation("io.projectreactor:reactor-test")
|
testImplementation("io.projectreactor:reactor-test")
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user