Я использую для запуска приложения на образе докера openjdk:10-slim
, и все работает нормально.
Затем я перешел на пользовательский JDK, созданный с помощью Jlink, используя следующий файл docker:
FROM openjdk:10-jdk-slim AS jdkBuilder
RUN $JAVA_HOME/bin/jlink \
--module-path /opt/jdk/jmods \
--verbose \
--add-modules java.base,java.logging,java.xml,java.xml.bind,java.sql,jdk.unsupported,java.naming,java.desktop,java.management,java.security.jgss,java.security.sasl,jdk.crypto.cryptoki,jdk.crypto.ec,java.instrument,jdk.management.agent \
--output /opt/jdk-minimal \
--compress 2 \
--no-header-files
FROM debian:9-slim
COPY --from=jdkBuilder /opt/jdk-minimal /opt/jdk-minimal
ENV JAVA_HOME=/opt/jdk-minimal
COPY target/*.jar /opt/
CMD $JAVA_HOME/bin/java $JAVA_OPTS -jar /opt/*.jar
Это в основном работает нормально, ожидайте, когда я использую AWS S3 SDK, и в этом случае я получаю следующее исключение:
com.amazonaws.SdkClientException: Unable to execute HTTP request: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Я предполагаю, что эти сертификаты (или способы доступа к ним) предоставляютсяодним отсутствующим пакетом, который я не включаю.
Я немного покопался и не смог найти никакой информации об этом.Я попытался добавить любой модуль, который может быть связан с безопасностью или SSL, но мне не повезло.
Кто-нибудь сталкивался с этой проблемой и знает, какой модуль нужно добавить?В качестве обходного пути я вернулся к openjdk:10-slim
, но я хотел бы использовать jlink
, поскольку это делает мое изображение меньше