常用 dockerfile 镜像
jdk
FROM alpine:3.20
ARG version=8.482.08.1
ARG TZ=Asia/Shanghai
LABEL maintainer="mumu" \
org.opencontainers.image.title="Amazon Corretto 8 JDK (Alpine)" \
org.opencontainers.image.vendor="Company" \
org.opencontainers.image.version="8.482.08.1" \
org.opencontainers.image.description="Amazon Corretto 8 JDK on Alpine with common tools"
# 基础工具 & 时区
RUN apk add --no-cache \
bash \
curl \
wget \
tzdata \
busybox-extras \
procps \
ca-certificates \
&& ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone
# Corretto license & repo
RUN wget -O /THIRD-PARTY-LICENSES-20200824.tar.gz \
https://corretto.aws/downloads/resources/licenses/alpine/THIRD-PARTY-LICENSES-20200824.tar.gz && \
echo "82f3e50e71b2aee21321b2b33de372feed5befad6ef2196ddec92311bc09becb /THIRD-PARTY-LICENSES-20200824.tar.gz" | sha256sum -c - && \
tar x -ovzf THIRD-PARTY-LICENSES-20200824.tar.gz && \
rm -f THIRD-PARTY-LICENSES-20200824.tar.gz && \
wget -O /etc/apk/keys/amazoncorretto.rsa.pub \
https://apk.corretto.aws/amazoncorretto.rsa.pub && \
echo "6cfdf08be09f32ca298e2d5bd4a359ee2b275765c09b56d514624bf831eafb91 /etc/apk/keys/amazoncorretto.rsa.pub" | sha256sum -c - && \
echo "https://apk.corretto.aws" >> /etc/apk/repositories
# 安装 JDK
RUN apk add --no-cache amazon-corretto-8=${version}-r0 && \
rm -f /usr/lib/jvm/java-8-amazon-corretto/lib/src.zip
# ===== 关键:JVM / Locale / Timezone =====
ENV TZ=Asia/Shanghai \
LANG=zh_CN.UTF-8 \
LC_ALL=zh_CN.UTF-8 \
JAVA_TOOL_OPTIONS="-Duser.timezone=Asia/Shanghai" \
JAVA_HOME=/usr/lib/jvm/default-jvm \
PATH=/usr/lib/jvm/default-jvm/bin:$PATH
# ===== 内置 java-info(不引入额外文件)=====
RUN printf '%s\n' \
'#!/bin/sh' \
'echo "===== OS & ARCH ====="' \
'uname -a' \
'echo' \
'echo "===== SYSTEM TIME ====="' \
'date' \
'date -u' \
'echo' \
'echo "===== TIMEZONE FILE ====="' \
'ls -l /etc/localtime' \
'cat /etc/timezone 2>/dev/null' \
'echo' \
'echo "===== JVM VERSION ====="' \
'java -version' \
'echo' \
'echo "===== JVM PROPERTIES ====="' \
'java -XshowSettings:properties -version 2>&1 | grep -E "user.timezone|user.language|user.country|file.encoding"' \
'echo' \
'echo "===== JAVA HOME ====="' \
'echo "$JAVA_HOME"' \
'ls "$JAVA_HOME/bin"' \
> /usr/local/bin/java-info \
&& chmod +x /usr/local/bin/java-info
HEALTHCHECK --interval=30s --timeout=3s \
CMD java -version || exit 1
CMD ["java", "-version"]
jre
FROM alpine:3.20
ARG version=8.482.08.1
ARG TZ=Asia/Shanghai
LABEL maintainer="mumu" \
org.opencontainers.image.title="Amazon Corretto 8 JRE (Alpine)" \
org.opencontainers.image.vendor="Company" \
org.opencontainers.image.version="8.482.08.1" \
org.opencontainers.image.description="Amazon Corretto 8 JRE on Alpine with common tools"
# 基础工具 & 时区
RUN apk add --no-cache \
bash \
curl \
wget \
tzdata \
busybox-extras \
procps \
ca-certificates \
&& ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone
# Corretto license & repo
RUN wget -O /THIRD-PARTY-LICENSES-20200824.tar.gz \
https://corretto.aws/downloads/resources/licenses/alpine/THIRD-PARTY-LICENSES-20200824.tar.gz && \
echo "82f3e50e71b2aee21321b2b33de372feed5befad6ef2196ddec92311bc09becb /THIRD-PARTY-LICENSES-20200824.tar.gz" | sha256sum -c - && \
tar x -ovzf THIRD-PARTY-LICENSES-20200824.tar.gz && \
rm -f THIRD-PARTY-LICENSES-20200824.tar.gz && \
wget -O /etc/apk/keys/amazoncorretto.rsa.pub \
https://apk.corretto.aws/amazoncorretto.rsa.pub && \
echo "6cfdf08be09f32ca298e2d5bd4a359ee2b275765c09b56d514624bf831eafb91 /etc/apk/keys/amazoncorretto.rsa.pub" | sha256sum -c - && \
echo "https://apk.corretto.aws" >> /etc/apk/repositories
# 安装 JRE
RUN apk add --no-cache amazon-corretto-8-jre=${version}-r0
# ===== 关键:JVM / Locale / Timezone =====
ENV TZ=Asia/Shanghai \
LANG=zh_CN.UTF-8 \
LC_ALL=zh_CN.UTF-8 \
JAVA_TOOL_OPTIONS="-Duser.timezone=Asia/Shanghai" \
JAVA_HOME=/usr/lib/jvm/default-jvm/jre \
PATH=/usr/lib/jvm/default-jvm/jre/bin:$PATH
# ===== 内置 java-info(JRE 版)=====
RUN printf '%s\n' \
'#!/bin/sh' \
'echo "===== OS & ARCH ====="' \
'uname -a' \
'echo' \
'echo "===== SYSTEM TIME ====="' \
'date' \
'date -u' \
'echo' \
'echo "===== TIMEZONE FILE ====="' \
'ls -l /etc/localtime' \
'cat /etc/timezone 2>/dev/null' \
'echo' \
'echo "===== JVM VERSION ====="' \
'java -version' \
'echo' \
'echo "===== JVM PROPERTIES ====="' \
'java -XshowSettings:properties -version 2>&1 | grep -E "user.timezone|user.language|user.country|file.encoding"' \
'echo' \
'echo "===== JAVA HOME ====="' \
'echo "$JAVA_HOME"' \
'ls "$JAVA_HOME/bin"' \
> /usr/local/bin/java-info \
&& chmod +x /usr/local/bin/java-info
HEALTHCHECK --interval=30s --timeout=3s \
CMD java -version || exit 1
CMD ["java", "-version"]
#!/bin/bash
set -euo pipefail
REGISTRY_HOST="xxx.cn"
REGISTRY_PATH="${REGISTRY_HOST}/xxx/base"
PLATFORMS="linux/amd64,linux/arm64"
TAG_SUFFIX="corretto-alpine-multi"
printf 'Logging into %s...\n' "${REGISTRY_HOST}"
echo "password" | docker login "${REGISTRY_HOST}" --username "xxxx" --password-stdin
# Create multi-platform builder
docker buildx create --use --name multi-platform-builder --driver docker-container 2>/dev/null || true
docker buildx build --platform "${PLATFORMS}" -f Dockerfile_jdk8 \
-t "${REGISTRY_PATH}/jdk:8-${TAG_SUFFIX}" --push .
docker buildx build --platform "${PLATFORMS}" -f Dockerfile_jre8 \
-t "${REGISTRY_PATH}/jre:8-${TAG_SUFFIX}" --push .

浙公网安备 33010602011771号