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

