前言
使用Gradle快速构建SpringBoot项目Docker镜像,将镜像推送到阿里云远程镜像仓库。
本文使用到的素材:Gradle构建的SpringBoot项目,Docker环境,docker-compose(非必需)。
本文项目源码地址:GitHub
SpringBoot项目基础项目
- 类型选择Gradle
- 勾选MVC依赖
-
目录结构
- 修改application配置文件修改端口
- 添加一个接口用于测试是否启动成功
修改build.gradle文件
配置镜像加快下载速度
repositories {
mavenLocal() // 配置先从本地仓库寻找jar包,优先寻找上一个配置,找到不执行下面的配置
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
}
添加docker-spring-boot插件
id 'com.bmuschko.docker-spring-boot-application' version '6.6.1'
添加docker构建配置
docker {
springBootApplication {
baseImage = 'openjdk:8-alpine' // 用于Spring Boot应用程序的Docker基本映像。
maintainer = 'codelong' // 镜像维护者
ports = [8080] // 暴露的端口
// 镜像名称和版本
images = ["${project.group}/${rootProject.name}:${project.version}",
"${project.group}/${rootProject.name}:latest"]
// 传递给java命令的JVM参数。
jvmArgs = ["-Djava.security.egd=file:/dev/./urandom", '-Xmx2048m']
// 用于启动应用程序的主类名称。如果您的源代码包含多个主类文件,则为此选项设置一个显式值很有用。
// mainClassName = 默认通过扫描类路径发现的唯一主类名称
}
// 如果url不指定的话
// Unix系统默认:unix:///var/run/docker.sock
// Windows系统默认:tcp://127.0.0.1:2375。
// url = 'https://192.168.3.103:2375'
}
修改后完整的build.gradle
plugins {
id 'org.springframework.boot' version '2.4.1'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
// docker-spring-boot插件
id 'com.bmuschko.docker-spring-boot-application' version '6.6.1'
id 'java'
}
group = 'com.codelong'
version = '1.0.0'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenLocal() //配置先从本地仓库寻找jar包,优先寻找上一个配置,找到不执行下面的配置
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
// docker构建配置
docker {
springBootApplication {
baseImage = 'openjdk:8-alpine' // 用于Spring Boot应用程序的Docker基本映像。
maintainer = 'codelong' // 镜像维护者
ports = [8080] // 暴露的端口
// 镜像名称和版本
images = ["${project.group}/${rootProject.name}:${project.version}",
"${project.group}/${rootProject.name}:latest"]
// 传递给java命令的JVM参数。
jvmArgs = ["-Djava.security.egd=file:/dev/./urandom", '-Xmx2048m']
// 用于启动应用程序的主类名称。如果您的源代码包含多个主类文件,则为此选项设置一个显式值很有用。
// mainClassName = 默认通过扫描类路径发现的唯一主类名称
}
// 如果url不指定的话
// Unix系统默认:unix:///var/run/docker.sock
// Windows系统默认:tcp://127.0.0.1:2375。
// url = 'https://192.168.3.103:2375'
}
test {
useJUnitPlatform()
}
点击刷新按钮后会看到多了一些任务命令
- dockerBuildImage:创建Docker镜像。
- dockerCreateDockerfile:生成Dockerfile文件。
- dockerPushImage:推送Docker镜像。
- dockerSyncBuildContext:将应用程序文件复制到临时目录以创建Docker镜像。
构建Docker本地镜像
这里为了方便演示就在本地构建进行启动,本地需要有docker环境。
查看docker版本
点击执行构建任务
查看镜像
docker images
启动容器
装了docker-compose的可以通过docker-compose.yml启动
version: '3.1'
services:
xiaoyan-oss-file:
image: com.codelong/l-gradle-springboot-docker:latest
container_name: l-gradle-springboot-docker
restart: always
environment:
TZ: Asia/Shanghai
ports:
- 8080:8080
没装docker-compos的可以通过run命令启动
docker run --name l-gradle-springboot-docker -d -p 8080:8080 com.codelong/l-gradle-springboot-docker:latest
查看容器是否启动成功
docker ps
访问测试
浏览器访问:http://127.0.0.1:8080/
访问成功。