基于alpine的最小化镜像

    1. #This is DockerFile based on the alpine image as java
    2. #1.jre1.8下载地址:https://www.oracle.com/java/technologies/javase-jre8-downloads.html#license-lightbox (登陆下载 jre-8u291-linux-x64.tar.gz) (本镜像不装)
    3. #2.jdk下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html#license-lightbox (登陆下载 jdk-8u291-linux-x64.tar.gz)
    4. #3.glibc下载地址:https://github.com/sgerrand/alpine-pkg-glibc/releases (下载其中的 glibc-2.33-r0.apk glibc-bin-2.33-r0.apk glibc-i18n-2.33-r0.apk 三个即可)
    5. ## 为什么需要glibc?
    6. # alpine为了精简本身并没有安装太多的常用软件,所以如果要使用jdk/jre的话就需要glibc
    7. # 而glibc需要先得到ca-certificates证书服务(安装glibc前置依赖)才能安装
    8. #用Alpine跑了JDK8的镜像结果发现,JDK还是无法执行
    9. #Java是基于GUN Standard C library(glibc)
    10. #Alpine是基于MUSL libc(mini libc)
    11. #所以Alpine需要安装glibc的库,以下是官方给出wiki
    12. #https://wiki.alpinelinux.org/wiki/Running_glibc_programs
    13. FROM alpine:3.14.0
    14. LABEL MAINTAINER="Dreambeer@126.com"
    15. # 设置JAVA变量环境
    16. ENV JAVA_HOME=/usr/local/jdk1.8.0_191
    17. ENV CLASSPATH=$JAVA_HOME/bin
    18. ENV PATH $PATH:$JAVA_HOME/bin
    19. ENV LANG "en_US.UTF-8"
    20. ENV JDK_VERSION jdk-8u191-linux-x64
    21. # 如果你下载了其它版本的glibc,记得修改这里glibc的版本号
    22. RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    23. echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories && \
    24. apk --no-cache update && \
    25. apk --no-cache upgrade && \
    26. apk --no-cache add ca-certificates wget && \
    27. wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
    28. wget https://github.com.cnpmjs.org/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk && \
    29. #/sgerrand npm中国代理
    30. apk add --no-cache glibc-2.30-r0.apk && \
    31. rm -rf *.apk && \
    32. rm -rf /var/cache/apk/* && \
    33. wget -P /usr/local/ http://downloads.ichzh.com/Java/jdk/$JDK_VERSION.tar.gz && \
    34. cd /usr/local && \
    35. tar -zxvf $JDK_VERSION.tar.gz && \
    36. rm -rf $JDK_VERSION.tar.gz /etc/apk/keys/sgerrand.rsa.pub && \
    37. apk del wget ca-certificates
    38. # 如果要在docker run时直接进入容器,那么应该用docker run -it ... [images:tag] sh (因为alpine基础镜像是不带bash的)
    39. # docker run -rm <images:tag>

    image.png