栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于构建springboot应用流程(可 linux直接部署或docker运行) 篇章三 打包(使用docker构建项目代码)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于构建springboot应用流程(可 linux直接部署或docker运行) 篇章三 打包(使用docker构建项目代码)

一、简介

本章将介绍如何制作打包镜像以及添加 gradle task 。

二、grade镜像制作

由于我们是基于 gradle 进行构建项目的,所以需要制作 gradle 镜像来打包,如下代码,就可以得到基于 jdk8 的 gradle7.5 镜像

FROM openjdk:8u332-jdk
# 获取gradle并解压
RUN echo "Downloading Gradle" && 
    wget -O gradle.zip https://downloads.gradle-dn.com/distributions/gradle-7.5-all.zip 
    && unzip gradle.zip 
    && rm gradle.zip

# 设置环境变量
ENV USER_HOME=/home/gradle 
    USER=gradle 
    JAVA_HOME=/usr/local/openjdk-8/ 
    TZ=Asia/Shanghai 
    GRADLE_HOME=/gradle-7.5 
    GRADLE_VERSION=7.5

# 设置全局软链接
RUN ln -s "${GRADLE_HOME}/bin/gradle" "/usr/bin/gradle"          
    && echo "Testing Gradle installation"  
    && gradle --version

# 设置进入的工作路径
WORKDIR $USER_HOME

写好 Dockerfile 后就可以开始制作镜像了,使用如下命令 docker build -t mc/gradle:1.0.0 .

三、制作基于脚本的构建镜像

那么有了 gradle 镜像后,需要一个触发启动的脚本才能发动打包动作,于是再添加一层镜像

启动脚本

#!/bin/sh

if [ "$1" = "pack" ]; then
	set -- buildService
elif [ "$1" = "buildJar" ]; then
	set -- copyRunnerJar
elif [ $# -lt 1 ]; then
	set -- copyRunnerJar
fi

/usr/bin/gradle -p ./app --no-daemon --parallel "$@"

制作启动镜像

FROM mc/gradle:1.0.0

# 定制脚本gradle.sh,将脚本复制到容器中
COPY --chown=gradle:gradle gradle.sh /home/gradle

写好 Dockerfile 后就可以开始制作镜像了,使用如下命令 docker build -t mc/build_service:1.0.0 .

四、添加task

如果想要构建项目,就需要在 build.gradle 文件里边添加 task 才能自定义构建,添加如下构建

  • 构建任务一
    复制依赖包到指定目录下

    task copyDepends(type: Copy) {
    from configurations.runtimeClasspath
    into "build/dist/libs/runtime"
    }
    
  • 构建任务二
    复制配置文件

    task copyConfig(type: Copy) {
    from "src/main/resources/config"
    into "build/dist/conf"
    }
    
  • 构建任务三
    复制之前提到的脚本

    	   task copyShell(type: Copy) {
    		    from "src/main/resources/bin/"
    		    excludes << "boot.sh"
    		    into "build/dist/bin/"
    		}
    
  • 构建任务四
    执行以上的任务

    	task copyRunnerJar(type: Copy) {
    	    copyRunnerJar.dependsOn(build, copyDepends, copyConfig,copyShell)
    	    from "build/libs/${rootProject.name}-${version}.jar"
    	    into "build/dist/bin"
    	    rename {
    	        it.replace(it, "${rootProject.name}.jar")
    	    }
    	}
    
  • 构建任务五
    压缩打包

    	task buildService(type: Zip) {
    	    buildService.dependsOn(clean, copyRunnerJar)
    	    from "build/dist"
    	    destinationDir file('build/distributions')
    	    baseName "${rootProject.name}"
    	    version "${project.version}-${LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))}"
    	}
    
  • 构建任务六
    清除

    	clean {
    	    delete << "out"
    	}
    
五、项目构建

拥有 mc/build_service:1.0.0 镜像后,你已经成功了一半了
编写构建脚本 build.sh ,将其放在目录根目录下,使用如下命令可以直接启动编译流程
开始打包构建: sh build.sh pack
仅仅打包 jar: sh build.sh buildJar

#!/bin/sh
IMG_NAME="mc/build_service:1.0.0"

docker run -it --rm -v $PWD:/home/gradle/app $IMG_NAME sh gradle.sh "$@"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号