SpringBoot打包成Docker镜像的项目实践

2024-04-16 0 783
目录
  • dockerFile编写
    • 普通dockerFile
  • 使用dockerFile打包镜像

    dockerFile编写

    普通dockerFile

    FROM java:8
    #此处的*为正则表达式,表示以.jar结尾的同步录下的文件(这里的jar是maven打包好的)
    COPY *.jar /app.jar

    CMD [\”–server.port=8080\”]
    EXPOSE 8080
    ENTRYPOINT [\”java\”,\”-jar\”,\”/app.jar\”]

    这种方法有缺点:

    • 镜像中的jar包是压缩文件,在容器环境中运行需要解压,造成比较大的开销
    • 将依赖和程序都放在一个层中,更新程序后编译新的镜像效率低。一般来说,依赖是基本不变的,只需要更新程序代码。

    spring官方推荐,构建镜像时,不要直接使用压缩的jar,而应该解压后构建镜像。

    解压方式打包的dockerFile的编写有版本分界线:springboot-2.3,在2.3以后的版本中,可以使用spring-boot-jarmode-layertools来帮助解压构建。

    2.3之前,需要手动分层解压

    将spring-boot项目打成jar包

    将jar解压到target/dependency

    dockerFile文件

    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ARG DEPENDENCY=target/dependency # jar包解压位置
    COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
    COPY ${DEPENDENCY}/META-INF /app/META-INF
    COPY ${DEPENDENCY}/BOOT-INF/classes /app
    ENTRYPOINT [\”java\”,\”-cp\”,\”app:app/lib/*\”,\”com.example.MyApplication\”]

    2.3以后

    使用spring-boot-jarmode-layertools,更加方便

    # 指定基础镜像,这是分阶段构建的前期阶段
    FROM openjdk:8 as builder
    # 执行工作目录
    WORKDIR application
    # 配置参数
    ARG JAR_FILE=target/*.jar
    # 将编译构建得到的jar文件复制到镜像空间中
    COPY ${JAR_FILE} application.jar
    # 通过工具spring-boot-jarmode-layertools 从application.jar 中提取拆分后的构建结果
    RUN java -Djarmode=layertools -jar application.jar extract

    # 正式构建镜像
    FROM openjdk:8
    WORKDIR application
    # 前一阶段从jar中提取除了多个文件,这里分别执行COPY命令将他们复制到镜像空间中,每次COPY都是一个layer
    COPY –from=builder application/dependencies/ ./
    COPY –from=builder application/spring-boot-loader/ ./
    COPY –from=builder application/snapshot-dependencies/ ./
    COPY –from=builder application/application/ ./
    ENTRYPOINT [\”java\”,\”-Duser.timezone=GMT+8\”,\”org.springframework.boot.loader.JarLauncher\”]

    使用dockerFile打包镜像

    # \’-t\’ 设置打包镜像tag, \’-f\’ 设置DockerFile文件, \’.\’选择当前目录
    docker build -t test:1.0 -f .\\DockerFile .

    到此这篇关于SpringBoot打包成Docker镜像的项目实践的文章就介绍到这了,更多相关SpringBoot打包成Docker镜像内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Linux服务器 SpringBoot打包成Docker镜像的项目实践 https://www.u-9.cn/server/linux/185807.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务