前言
springboot从2.4默认提供了打镜像的gradle插件,但通过此插件没找到能设置基础镜像的方式,参见:
https://blog.csdn.net/u011943534/article/details/112136459
,下面介绍一种通过第三方插件打镜像并推送至镜像私服的方式
1、使用gradle部署springboot项目
略
2、Docker开启远程访问
参考:
https://blog.csdn.net/u011943534/article/details/112134818
3、安装镜像私服Harbor
参考:
https://blog.csdn.net/u011943534/article/details/110918562
4、gradle中配置插件
buildscript中引入插件
buildscript {
repositories {
……
mavenCentral()
}
dependencies {
classpath "com.bmuschko:gradle-docker-plugin:6.7.0"
}
}
插件官网:
https://bmuschko.github.io/gradle-docker-plugin
项目路径下的gradle.properties中添加版本信息:
dockerRemoteAddr=tcp://172.16.10.190:2375
dockerRegistryUrl=172.16.10.160:88
dockerRegistryUsername=admin
dockerRegistryPassword=Harbor12345
添加配置:
apply plugin: 'com.bmuschko.docker-remote-api'
apply plugin: 'com.bmuschko.docker-spring-boot-application'
……
dockerCreateDockerfile {
instruction 'RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone'
environmentVariable 'TimeZone', 'Asia/Shanghai'
environmentVariable 'myenv', 'this is my test'
}
docker {
url = "${dockerRemoteAddr}"
springBootApplication {
baseImage = "${dockerRegistryUrl}/library/oneclick/openjdk:11-jdk-oracle"
maintainer = 'newframe'
ports = [6001, 8719]
images = ["${dockerRegistryUrl}/library/${rootProject.name}/${project.name}:${version}"]
jvmArgs = ['-Djava.security.egd=file:/dev/./urandom']
mainClassName = "com.iscas.business.product.ProductApp"
}
registryCredentials {
url = "http://${dockerRegistryUrl}"
username = "${dockerRegistryUsername}"
password = "${dockerRegistryPassword}"
}
}
com.bmuschko.docker-remote-api
和
com.bmuschko.docker-spring-boot-application
是两个插件,除了这俩,还有一个插件
com.bmuschko.docker-java-application
插件 | 说明 |
---|---|
com.bmuschko.docker-remote-api | 提供自定义任务以通过其远程 API 与 Docker 交互 |
com.bmuschko.docker-java-application | 为 Java 应用程序创建并推送 Docker 映像 |
com.bmuschko.docker-spring-boot-application | 为 Spring Boot 应用程序创建并推送 Docker 映像 |
springBootApplication
对应springboot的一些配置:
属性名 | 类型 | 默认值 | 描述 |
---|---|---|---|
baseImage | String | openjdk:jre-alpine | docker基础镜像 |
maintainer | String | 系统属性”user.name” | 镜像的maintainer |
ports | List | [8080] | 容器暴露的端口 |
images | List | [<project.group>/:<project.version>] | build和push的镜像名称 |
jvmArgs | List | [] | jvm参数 |
mainClassName | String | classpath中唯一的主类 | 用于启动应用程序的主类名。 如果您的源代码包含多个主类文件,则为此选项设置显式值很有用。 |
url
对应远程docker API地址
registryCredentials
对应要推送的远程镜像私服地址和用户名密码。
执行
dockerBuildImage
命令,构建此工程为Docker镜像,执行dockerPushImage命令,将项目构建为Docker镜像,并推送至远程镜像私服。