Linux Alpine
1、關于linux alpine 樓主就不多介紹了,在容器化背景下, alpine 非常適合做容器基礎鏡像 。
2、有興趣的同學可以轉至官網查看 https://www.alpinelinux.org
制作Java鏡像
1、樓主這里展示了基于 JDK1.8 和 JDK 11 的鏡像制作方式 , 如下為 Dockerfile 文件
2、樓主這里增加了 glibc 庫, 主要是為了解決中文亂碼及部分Java工程可能使用的依賴
FROM alpine:3.15
CMD ["/bin/sh"]
MAINTAINER 871364441@qq.com
# 創(chuàng)建工作目錄
WORKDIR /root
# 修改軟件包源地址(此處使用 清華大學的源地址)
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
# 更新軟件包
RUN apk update upgrade
RUN apk add --no-cache ca-certificates tzdata tree curl tini
# 安裝 glibc 庫,主要為了解決中文亂碼, 但是有部分java工程可能會依賴. 比如: aws kinesis 等
COPY locale.md locale.md
COPY glibc-2.35-r0.apk glibc-2.35-r0.apk
COPY glibc-bin-2.35-r0.apk glibc-bin-2.35-r0.apk
COPY glibc-i18n-2.35-r0.apk glibc-i18n-2.35-r0.apk
COPY sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub
RUN apk add glibc-2.35-r0.apk glibc-bin-2.35-r0.apk glibc-i18n-2.35-r0.apk
RUN cat locale.md | tr -d '\r' | xargs -i /usr/glibc-compat/bin/localedef -i {} -f UTF-8 {}.UTF-8 && \
rm -rf *.apk && \
rm -rf /var/cache/apk/* && \
rm -rf locale.md
# tzdata 是可以配置時區(qū),這里默認使用上海時區(qū)
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
RUN { echo '#!/bin/sh'; echo 'set -e'; echo; echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; } > /usr/local/bin/docker-java-home
RUN chmod +x /usr/local/bin/docker-java-home
# 支持使用中文
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN.UTF-8
# 以下為安裝jdk 11 的命令 , 目前alpine:3.15 里面軟件包最新版本 jdk版本 11.0.15
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-11-openjdk/jre/bin:/usr/lib/java-11-openjdk/bin
RUN apk add --no-cache openjdk11 && [ "$JAVA_HOME" = "$(docker-java-home)" ]
# 以下為安裝jdk 1.8 的命令 , 目前alpine:3.15 里面軟件包最新版本 jdk版本 1.8.0_322
# ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
# ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
# RUN apk add --no-cache openjdk8 && [ "$JAVA_HOME" = "$(docker-java-home)" ]
CMD ["java","-version"]
關于 glibc 的幾個文件和locale文件
1、glibc 文件 下載方式及地址 (樓主網絡不穩(wěn)定,所以提前下載好使用)
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-i18n-2.35-r0.apk
wget https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
2、locale 文件及其 內容
1、創(chuàng)建文件
touch locale.md
2、寫入文件內容
en_US
zh_CN
zh_HK
zh_SG
zu_ZA
關于容器啟動 Java 服務
1、啟動Java服務時,在 dockerfile 末尾里面增加
ENTRYPOINT ["tini","java","-Dfile.encoding=utf-8","-jar","/demo.jar"]
2、切記一定要 增加 tini
命令,是為了容器啟動后可以正常使用 jstack
和jmap
兩個命令的文章來源:http://www.zghlxwxcb.cn/news/detail-706176.html
關于docker鏡像
1、JDK 11
的鏡像已經上傳指docker官方鏡像倉庫, 歡迎下載: docker pull duxinglangzi/alpine-java11:latest
2、JDK 8
的鏡像下載地址: docker pull duxinglangzi/alpine-java8:latest
文章來源地址http://www.zghlxwxcb.cn/news/detail-706176.html
到了這里,關于基于Linux Alpine 制作 Java 8、11 Docker 鏡像并支持中文的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!