diff --git a/Dockerfile b/Dockerfile index 1b29b9b8..542f07e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,4 +12,4 @@ COPY modules/apps/${APP_NAME}/target/${APP_NAME}.jar /app/app.jar EXPOSE 20100 20200 20300 20400 20500 32960 808 -ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/app.jar"] +ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar /app/app.jar"] diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java index 4d897448..3d289a11 100644 --- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java +++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java @@ -47,6 +47,15 @@ class PortainerComposeResourceLimitsTest { .contains("JAVA_OPTS: ${JAVA_OPTS:---sun-misc-unsafe-memory-access=allow -XX:+UseZGC -XX:MaxRAMPercentage=75}"); } + @Test + void dockerEntrypointExecsJavaForSignalHandling() throws IOException { + String dockerfile = Files.readString(repositoryRoot().resolve("Dockerfile")); + + assertThat(dockerfile) + .contains("ENTRYPOINT [\"sh\", \"-c\", \"exec java $JAVA_OPTS -jar /app/app.jar\"]") + .doesNotContain("\"java $JAVA_OPTS -jar /app/app.jar\""); + } + @Test void gb32960ComposeExposesBothPlatformAccountsWithoutSecrets() throws IOException { String compose = Files.readString(repositoryRoot().resolve("deploy/portainer/docker-compose.yml"));