一 较大的镜像往往会导致移植,迁移缓慢。最后启动并进入容器发现,jdk用的是openjdk,那么我们就需要在构建镜像时使用更小的jdk作为基础镜像,进而减小镜像的大小。
二、解决方案
使用Oracle的JRE不是openjdk,并构建成Docker镜像。具体步骤如下:
2.1 下载并上传jre到linux服务器
jdk下载地址
大小大概是77M.
2.2 删除无用文件
1 解压压缩包
tar -xvcf jre-8u181-linux-x64.tar.gz
2 删除无用的文件
cd jre1.8.0_181/
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html
rm -rf lib/plugin.jar \
lib/ext/jfxrt.jar \
bin/javaws \
lib/javaws.jar \
lib/desktop \
plugin \
lib/deploy* \
lib/*javafx* \
lib/*jfx* \
lib/amd64/libdecora_sse.so \
lib/amd64/libprism_*.so \
lib/amd64/libfxplugins.so \
lib/amd64/libglass.so \
lib/amd64/libgstreamer-lite.so \
lib/amd64/libjavafx*.so \
lib/amd64/libjfx*.so
3重新打包
tar zcvf jre8.tar.gz *
2.3 新建Dockerfile
# using alpine-glibc instead of alpine is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# author
MAINTAINER simon
# A streamlined jre
ADD jre8.tar.gz /usr/java/jdk/
# set env
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
# run container with base path:/opt
WORKDIR /opt
2.4 构建docker镜像
docker build -t simon/java8:1.0 .
这样构建的jdk镜像大概是120M左右。
2.5 修改Dockerfile配置
FROM simon/java8:1.0
VOLUME /tmp
COPY . /usr/local/xy_pay_risk
ENV JAVA_OPTS=""
ENV ACTIVE=""
WORKDIR /usr/local/xy_pay_risk
# ENTRYPOINT 后面跟着exec 则后面跟着的java进程的pid=1
ENTRYPOINT exec java ${JAVA_OPTS} -jar /usr/local/xy_pay_risk/xy-pay-risk.jar --spring.profiles.active=${ACTIVE}
构建之后的镜像只有200M左右。