diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..dde52ba3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +# Stage 1: Use debian to install curl and gather its dependencies +FROM debian:11-slim AS curl-deps +RUN apt-get update && apt-get install -y curl +RUN mkdir -p /tmp/curl-deps +RUN cp $(ldd /usr/bin/curl | grep -v linux-vdso.so.1 | awk '{print $3}' | grep -v '^$') /tmp/curl-deps/ +RUN cp /usr/bin/curl /tmp/curl-deps/ + +# Stage 2: Final distroless image +FROM gcr.io/distroless/java17-debian11 +COPY --from=curl-deps /tmp/curl-deps/* /usr/lib/ +COPY --from=curl-deps /usr/bin/curl /usr/bin/ + +# Configure the application +EXPOSE 8080 +ENV JAVA_TOOL_OPTIONS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75" +COPY build/libs/app.jar /app/app.jar +WORKDIR /app +CMD ["app.jar"] diff --git a/build.gradle.kts b/build.gradle.kts index f17c6675..748739df 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -212,6 +212,8 @@ tasks.javadoc { } } +// Original Jib configuration (commented out in favor of custom Dockerfile with curl) +/* jib { from { platforms { @@ -231,6 +233,17 @@ jib { mainClass = mainClassKt } } +*/ + +// Add Docker build task for custom Dockerfile +tasks.register("buildDocker") { + dependsOn("shadowJar") + doLast { + exec { + commandLine("docker", "build", "-t", "mock-oauth2-server:latest", ".") + } + } +} (components["java"] as AdhocComponentWithVariants).withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) { skip() diff --git a/docker-compose-ssl.yaml b/docker-compose-ssl.yaml index 9f8813a5..acf6f87b 100644 --- a/docker-compose-ssl.yaml +++ b/docker-compose-ssl.yaml @@ -3,6 +3,12 @@ version: "3.1" services: mock-oauth2-server: image: mock-oauth2-server:latest + healthcheck: + test: ["CMD", "curl", "--retry", "7", "--retry-delay", "1", "--retry-connrefused", "-sk", "-f", "https://localhost:8080/isalive"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 5s ports: - "8080:8080" volumes: @@ -11,3 +17,4 @@ services: LOG_LEVEL: "debug" SERVER_PORT: 8080 JSON_CONFIG_PATH: /app/config.json + diff --git a/docker-compose.yaml b/docker-compose.yaml index bc6a64a8..25209c78 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,6 +3,12 @@ version: "3.1" services: mock-oauth2-server: image: mock-oauth2-server:latest + healthcheck: + test: ["CMD", "curl", "--retry", "7", "--retry-delay", "1", "--retry-connrefused", "-f", "http://localhost:8080/isalive"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 5s ports: - "8080:8080" volumes: