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

2 篇文章 0 订阅

一、简介

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

二、grade镜像制作

由于我们是基于 gradle 进行构建项目的,所以需要制作 gradle 镜像来打包,如下代码,就可以得到基于 jdk8gradle7.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 "$@"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于使用Spring Boot部署Linux上的Docker环境,您可以按照以下步骤进行操作: 1. 首先,确保您已经在Linux服务器上安装了Docker,并且Docker服务已经启动。 2. 将您的Spring Boot项目打包成一个可执行的JAR文件。您可以使用Maven或者Gradle来完成这个步骤。 3. 创建一个Dockerfile,用于构建Docker镜像。在项目根目录下创建一个名为`Dockerfile`的文件,并添加以下内容: ``` FROM adoptopenjdk:11-jre-hotspot WORKDIR /app COPY target/your-project.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"] ``` 这个Dockerfile使用了AdoptOpenJDK提供的Java 11运行时环境,并将可执行的JAR文件复制到容器的`/app`目录下。 4. 使用Docker命令构建镜像。在项目根目录下执行以下命令: ``` docker build -t your-image-name . ``` 这个命令会根据Dockerfile构建一个名为`your-image-name`的镜像。注意命令最后的`.`表示Dockerfile所在的当前目录。 5. 运行Docker容器。执行以下命令: ``` docker run -d -p 8080:8080 your-image-name ``` 这个命令会在后台运行一个名为`your-image-name`的容器,并将容器的8080端口映射到宿主机的8080端口上。 现在,您的Spring Boot项目已经通过Docker部署Linux上了。您可以通过访问服务器的IP地址加上端口号来访问您的应用程序,例如:`http://your-server-ip:8080`。 希望对您有所帮助!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值