jdk/Dockerfile.corretto-alpine

59 lines
2.0 KiB
Docker

ARG REGISTRY_URL=docker.io/aprimediet
ARG ALPINE_VERSION=3.21
FROM ${REGISTRY_URL}/alpine:${ALPINE_VERSION}
LABEL maintainer="<Muhamad Aditya Prima> aprimediet@gmail.com"
ARG JAVA_VERSION=8
USER root
WORKDIR /tmp
# Set java environment
ENV JAVA_HOME=/usr/local/share/jdk
ENV PATH=${JAVA_HOME}/bin:$PATH
# Default to UTF-8 file.encoding
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
# Add nginx user and group
RUN addgroup -g 10001 java && \
adduser -D -u 10001 -G java -s /sbin/nologin -h /app java
# Install requirements
RUN --mount=type=cache,target=/var/cache/apk \
apk add --update \
# java.lang.UnsatisfiedLinkError: libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory
# java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077
fontconfig ttf-dejavu \
# gnupg required to verify the signature
gnupg \
# utilities for keeping Alpine and OpenJDK CA certificates in sync
# https://github.com/adoptium/containers/issues/293
ca-certificates p11-kit-trust \
# locales ensures proper character encoding and locale-specific behaviors using en_US.UTF-8
musl-locales musl-locales-lang \
tzdata \
# Contains `csplit` used for splitting multiple certificates in one file to multiple files, since keytool can
# only import one at a time.
coreutils \
# Needed to extract CN and generate aliases for certificates
openssl;
# Get amazon correto jdk flavor
ADD https://corretto.aws/downloads/latest/amazon-corretto-${JAVA_VERSION}-x64-alpine-jdk.tar.gz ./
# Extract to JAVA_HOME
RUN tar -xzvf ./amazon-corretto-${JAVA_VERSION}-x64-alpine-jdk.tar.gz -C /usr/local/share && \
mv /usr/local/share/amazon* /usr/local/share/jdk && \
rm -f ./amazon-corretto-${JAVA_VERSION}-x64-alpine-jdk.tar.gz && \
chown -R java:java /usr/local/share/jdk && \
rm -rf /var/cache/apk/*
USER java
WORKDIR /app
CMD ["/usr/local/share/jdk/bin/java"]