A simple fix for using ca-certificates to update Java cacerts store for container.
Due to the update-ca-certificates will output the Java cacerts store to /etc/ssl/certs/java/cacerts which the pre-built image not aware of the changes. So by removing the ${JAVA_HOME}/lib/security/cacerts and create a symbolic link from /etc/ssl/certs/java/cacerts to ${JAVA_HOME}/lib/security/cacerts will resolve the issue.
FROM eclipse-temurin:17-jre-alpine
RUN apk add -Uu --no-cache \
ca-certificates \
java-cacerts \
; rm ${JAVA_HOME}/lib/security/cacerts \
; ln -s /etc/ssl/certs/java/cacerts ${JAVA_HOME}/lib/security/cacerts \
; update-ca-certificatesFROM eclipse-temurin:17-jre-focal
RUN apt-get update \
&& apt install -y --no-install-recommends \
ca-certificates \
p11-kit \
; { \
echo '#!/usr/bin/env bash'; \
echo 'set -Eeuo pipefail'; \
echo 'trust extract --overwrite --format=java-cacerts --filter=ca-anchors --purpose=server-auth "$JAVA_HOME/lib/security/cacerts"'; \
} > /etc/ca-certificates/update.d/java-cacerts \
; chmod +x /etc/ca-certificates/update.d/java-cacerts \
; update-ca-certificates \
&& rm -rf /var/lib/apt/lists/*For using with generic container, you only need to install ca-certificates, java-cacerts (alpine) or ca-certificates-java (debian) and your jdk/jre of choice.
FROM alpine:latest
RUN apk add -Uu --no-cache \
ca-certificates \
java-cacerts \
openjdk11-jre-headlessFROM ubuntu:focal
RUN apt-get update \
&& apt install -y --no-install-recommends \
ca-certificates \
ca-certificates-java \
openjdk-11-jre-headless \
&& rm -rf /var/lib/apt/lists/*
Very helpful. Thanks for sharing!