Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
|
2 years ago | |
---|---|---|
.. | ||
src | 2 years ago | |
Dockerfile | 2 years ago | |
README.md | 2 years ago | |
pom.xml | 2 years ago |
本 demo 主要演示了如何容器化一个 Spring Boot 项目。通过
Dockerfile
的方式打包成一个 images 。
参考 demo-base-helloworld
案例即可
# 多阶段构建
FROM amazoncorretto:17.0.4-alpine3.15 as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
# layertools extract 命令会将 spring boot fatjar 解压成多个 layers
RUN java -Djarmode=layertools -jar application.jar extract
FROM amazoncorretto:17.0.4-alpine3.15
# 作者信息
MAINTAINER "Yangkai.Shen 237497819@qq.com"
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
# 添加一个存储空间
VOLUME /tmp
# 暴露8080端口
EXPOSE 8080
# 入口
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/urandom","org.springframework.boot.loader.JarLauncher"]
$ mvn clean -DskipTests package
demo-package-docker
目录,构建镜像$ cd demo-package/demo-package-docker
$ docker build -t demo-package-docker:v1 .
$ docker images | grep demo
demo-package-docker v3 58e9b4918f61 19 minutes ago 353MB
demo-package-docker v2 35303ce1960c 22 minutes ago 351MB
demo-package-docker v1 7d4a9e953a19 28 minutes ago 351MB
$ docker run -p 8080:8080 demo-package-docker:v1
注意:
1.Spring Boot 提供的 maven 插件中已包含spring-boot-loader-tools
依赖,该依赖可以将 SpringBoot FatJar 解压为每个layer,这样在 Docker 多阶段构建的时候,可以让 Docker 复用已存在的 layer,达到加速构建、加速上传、加速下载的目的
2.同学们可以通过修改代码、添加依赖等方式重新 build 不同版本的镜像,然后通过docker inspect xxx
命令对比不同版本的 layer,观察输出信息是否存在相同的 layer sha256 值,存在即表示 Docker 已经复用了该 layer
一个用来深度学习并实战 spring boot 的项目,目前总共包含 66 个集成demo,已经完成 55 个。
Java SVG CSS JavaScript SQL other