文章目录
Docker分层
Docker 容器由基本映像和附加层组成。一旦构建了各个层,它们将保持缓存状态,后续构建,就会使用缓存,构建更快
低层次的变化也会重建较高层次的变化。因此,我们在构建镜像的时候最好将不经常变化的图层保留在底部,而经常变化的图层应该放在顶部。这样就能提高构建docker效率和启动时间。
Spring Boot分层
Spring boot 在2.3之后也提供了应用分层,默认分层如下
这里可以看到应用层是独立一层,我们在修改应用代码的时候就只用构建应用层即可。 spring-boot-loader
、 dependencies
层就可以使用缓存,从而减少docker镜像的创建和启动时间。
分层打包
- 传统打包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这种方式是将整个Spring Boot打成一个jar,没有分层
在Spring Boot 2.3之后添加了分层配置我们在打包插件中开启分层打包
- 分层打包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>ma