2023年再回头看这些应用技术的时候,觉得就很好笑,原以为花时间研究的有点竞争力的东西,今天已经变得很容易,当我讲springboot升级到2.7.6,使用发生了较大变化
首先spring2.4.x之后需要引入对应的版本,否则读取不到bootstrap.yml
配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
编译的jar已经不需要配置layers.xml,而且docker分层默认是开启的,已经不需要设置layers.xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- <configuration>-->
<!-- <layers>-->
<!-- <enabled>true</enabled>-->
<!-- <configuration>${project.basedir}/src/main/resources/layers.xml</configuration>-->
<!-- </layers>-->
<!-- </configuration>-->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
1 从jdk入手
java依赖glibc,而alpine linux发行版本的优势在于容量超小,Alpine
而生产环境只需要jre就可以,因为jre是java的运行环境,并不需要jdk,因为jdk是java开发工具包,jre-8u181-linux-x64.tar.gz是压缩后的,预计78M
windows解压之后207M
# 基础镜像
FROM frolvlad/alpine-glibc
# 作者
MAINTAINER dzm
# 安装jre
ADD jre-8u181-linux-x64.tar.gz /usr/java/jdk/
# 设置时区GTM+8(打开注释设置时区)
#ADD Shanghai /etc/localtime
#RUN echo "Asia/Shanghai" > /etc/timezone
# 设置变量
ENV JAVA_HOME /usr/java/jdk/jre1.8.0_181
ENV PATH ${
PATH}:${JAVA_HOME}/bin
# 运行容器的工作目录
WORKDIR /opt
通过执行命令,查看每层文件的大小,其中99e2394e1814
为镜像id,下方可以看到按照上面的Dockerfile打包之后每层的情况。
从下面看到最大的217M应该是jre的解压之后的大小
可以通过docker history 3f755698926c --no-trunc=true
查看完整信息
[root@bg7 ~]# docker history 99e2394e1814
IMAGE CREATED CREATED BY SIZE COMMENT
99e2394e1814 5 days ago /bin/sh -c #(nop) WORKDIR /opt 0B
cb818d3a1445 5 days ago /bin/sh -c #(nop) ENV PATH=/usr/local/sbin:… 0B
6eaf8e8577bd 5 days ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/java/j… 0B
a8fb7d6e6857 5 days ago /bin/sh -c #(nop) ADD file:29e530d02a2c72e1b… 217MB
85b9e327a2fd 5 days ago /bin/sh -c #(nop) MAINTAINER dzm 0B
84c377141a24 2 months ago /bin/sh -c ALPINE_GLIBC_BASE_URL="https://gi… 12.4MB
<missing> 2 months ago /bin/sh -c #