基于alpine构建jdk21版本并安装字体和设置时区

基于alpine构建jdk21版本并安装字体和设置时区

网上的jdk21版本docker基础镜像很少,所以我们需要自己去构建,

编写基础Dockerfile文件

FROM alpine:latest
MAINTAINER wuhm

# 替换清华镜像源并安装字体
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \
    && apk update \
    && apk --no-cache add ttf-dejavu fontconfig

# 安装时区
RUN apk add --no-cache tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

# 设置工作目录
WORKDIR /
# 安装jdk21
RUN apk add --no-cache openjdk21
# 设置 JAVA_HOME 环境变量
ENV JAVA_HOME=/usr/lib/jvm/default-jvm
CMD ["java", "-version"]

构建镜像

docker build -t registry.cn-beijing.aliyuncs.com/wuhm/jdk21-apline:21.0.3 .

测试镜像

docker run --name jdk21 -itd  registry.cn-beijing.aliyuncs.com/wuhm/jdk21-apline:21.0.3

查看日志

(base) ➜ docker logs  jdk21

openjdk version "21.0.3" 2024-04-16
OpenJDK Runtime Environment (build 21.0.3+9-alpine-r0)
OpenJDK 64-Bit Server VM (build 21.0.3+9-alpine-r0, mixed mode, sharing)
(base)

推送镜像

docker push registry.cn-beijing.aliyuncs.com/wuhm/jdk21-apline:21.0.3

运用

运用的Dockerfile

FROM registry.cn-beijing.aliyuncs.com/wuhm/jdk21-apline:21.0.3
#FROM registry.cn-beijing.aliyuncs.com/wuhm/base-ubuntu-jdk21-ffmpeg:1.0.2
ARG VERSION
ARG SERVICE_NAME
ARG SERVICE_PORT
ENV VERSION=$VERSION
ENV SERVICE_NAME=$SERVICE_NAME
ENV SERVICE_PORT=$SERVICE_PORT

# 运行参数
ENV JAVA_OPTS=""
ENV LOG_PATH="/var/logs"
ENV PROFILE=""

ENV ENABLE_DEBUG="false"
ENV ENABLE_DEBUG_PORT="5005"

VOLUME /tmp
VOLUME $LOG_PATH

# 应用构建成功后的jar文件被复制到镜像内,名字也改成了app.jar
ADD ./target/${SERVICE_NAME}.jar /app.jar

# 设置环境变量
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8

# 声明运行时端口
EXPOSE ${SERVICE_PORT}
EXPOSE ${ENABLE_DEBUG_PORT}

# 启动容器时的进程
#ENTRYPOINT sh -c 'java $JAVA_OPTS -jar -Xmx256m -Dfile.encoding=utf-8 /app.jar --logging.file.path=$LOG_PATH --spring.profiles.active=$PROFILE'
# 启动容器时的进程
ENTRYPOINT sh -c 'if [ "$ENABLE_DEBUG" = "true" ]; then \
                    echo "ENABLE_DEBUG=true" ; \
                    JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:${ENABLE_DEBUG_PORT}" ; \
                  fi ; \
                  echo "JAVA_OPTS=$JAVA_OPTS" ; \
                  java $JAVA_OPTS -jar -Xmx256m -Dfile.encoding=utf-8 /app.jar --logging.file.path=$LOG_PATH --spring.profiles.active=$PROFILE'
0%