# docker-gradle-plugin
**Repository Path**: godfather1103/docker-gradle-plugin
## Basic Information
- **Project Name**: docker-gradle-plugin
- **Description**: 构建、推送docker镜像(build or push docker Image.)
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2022-03-20
- **Last Updated**: 2023-11-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, Docker, gradle-plugin
## README
# English Readme [click here](README.EN.md)
# docker-gradle-plugin
> 构建,推送docker镜像的Gradle插件
## 前置说明
1. 低于1.2(含)的版本有bug,但是上传了之后没法删除,所以建议使用>=1.2.1的版本
## 代码库
GitHub: [https://github.com/godfather1103/docker-gradle-plugin](https://github.com/godfather1103/docker-gradle-plugin)
Gitee/码云: [https://gitee.com/godfather1103/docker-gradle-plugin](https://gitee.com/godfather1103/docker-gradle-plugin)
## 用法
1. 在build.gradle中引入相关插件
```groovy
// groovy DSL
// Using the plugins DSL:
plugins {
id "io.github.godfather1103.docker-plugin" version "2.3"
}
// Using legacy plugin application:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "io.github.godfather1103:docker-plugin:2.3"
}
}
apply plugin: "io.github.godfather1103.docker-plugin"
// kotlin DSL
// Using the plugins DSL:
plugins {
id("io.github.godfather1103.docker-plugin") version "2.3"
}
// Using legacy plugin application:
buildscript {
repositories {
maven {
url = uri("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath("io.github.godfather1103:docker-plugin:2.3")
}
}
apply(plugin = "io.github.godfather1103.docker-plugin")
```
2. 配置相关构建参数
```groovy
// groovy DSL
docker {
dockerBuildDependsOn.add("bootJar")
dockerDirectory.value(project.projectDir.absolutePath)
def user = (project.findProperty("docker.username") ?: "").toString()
def password = (project.findProperty("docker.password") ?: "").toString()
def email = (project.findProperty("docker.email") ?: "").toString()
def name = (project.findProperty("docker.demo.imageName") ?: "demo").toString()
if (!user.isEmpty() && !password.isEmpty()) {
auth.value(new AuthConfig(user, password, email))
}
dockerBuildArgs.put("GitTag", "1.0")
imageName.value(name + "-groovy")
dockerImageTags.add("1.0")
pushImageTag.value(true)
pushImage.value(true)
// since 2.0
platform.value("linux/amd64")
}
// kotlin DSL
docker {
dockerBuildDependsOn.add("bootJar")
dockerDirectory.value(project.projectDir.absolutePath)
val user = (project.findProperty("docker.username") ?: "") as String
val password = (project.findProperty("docker.password") ?: "") as String
val email = (project.findProperty("docker.email") ?: "") as String
val name = (project.findProperty("docker.demo.imageName") ?: "demo") as String
if (user.isNotEmpty() && password.isNotEmpty()) {
auth.value(AuthConfig(user, password, email))
}
dockerBuildArgs.put("GitTag", "1.0")
imageName.value("$name-kotlin")
dockerImageTags.add("1.0")
pushImageTag.value(true)
pushImage.value(true)
// since 2.0
platform.value("linux/arm64/v8")
}
```
## 任务
> 插件包含以下任务。
| 任务 | 描述 |
|:-----------------------|:------------|
| dockerBuild | 构建docker镜像。 |
## 配置DSL
> 以下属性是设置DSL docker{…}的一部分其中允许您设置环境和依赖项。
| 配置项 | 属性值 |
|:--------------------------------------------|:--------------------------------------------------------------------------------------------------------|
| imageName - 构建的镜像名 | **允许的值:**
字符串 - `'demoImage'`
**默认值:** '' |
| dockerDirectory - docker对应的目录 | **允许的值:**
路径 - `'${project.projectDir}/'`
**默认值:** '' |
| dockerBuildDependsOn - 构建镜像依赖的任务 | **允许的值:**
任务名 - `'bootJar'`
**默认值:** '' |
| dockerImageTags - 构建的tag列表 | **允许的值:**
字符串 - `'1.0'`
**默认值:** '' |
| pushImage - 是否推送对应的镜像 | **允许的值:**
布尔值 - `true`
**默认值:** false |
| pushImageTag - 是否推送tag | **允许的值:**
布尔值 - `true`
**默认值:** false |
| auth - 认证信息 | **允许的值:**
AuthConfig对象 - `new AuthConfig(用户名,密码,邮箱)`
**默认值:** null |
| dockerBuildArgs - docker build参数 | **允许的值:**
Map - `map["arg1"]="arg"`
**默认值:** null |
| resources - 构建过程中复制的资源 | **允许的值:**
List[Resource] - `[Resource1,...,ResourceN]`
**默认值:** [] |
| platform - 构建的目标平台 | **允许的值:**
字符串 - `linux/arm64/v8`
**默认值:** '' |
### AuthConfig对象属性值
| 配置项 | 属性值 |
|:-----------------------------------|:-----------------------------------------------------------------------------------------|
| username - docker账户的用户名 | **允许的值:**
字符串 - `'username'`
**默认值:** '' |
| password - docker账户的密码 | **允许的值:**
字符串 - `'password'`
**默认值:** '' |
| email - docker账户的email | **允许的值:**
字符串 - `'example@example.com'`
**默认值:** '' |
### Resource对象属性值
| 配置项 | 属性值 |
|:---------------------------------------|:-----------------------------------------------------------------------------------------|
| directory - 相关路径 | **允许的值:**
字符串 - `'/'`
**默认值:** '' |
| targetPath - 目标路径 | **允许的值:**
字符串 - `'build/docker'`
**默认值:** '' |
| includes - 引入的资源(Ant-style) | **允许的值:**
字符串列表 - `['*.jar','*.class']`
**默认值:** [] |
| excludes - 排除的资源(Ant-style) | **允许的值:**
字符串列表 - `['*.log','log/**']`
**默认值:** [] |
### 配置默认的docker账户信息
> 用户可以在gradle.properties中配置以下参数作为默认的账户信息,当项目中未配置对应的认证信息信息时,将使用默认的账户信息。
| 配置项 | 属性值 |
|:------------------------------------------|:--------------------------------------------------------|
| docker.username - docker账户的用户名 | **允许的值:**
字符串 - `'username'` |
| docker.password - docker账户的密码 | **允许的值:**
字符串 - `'password'` |
| docker.email - docker账户的email | **允许的值:**
字符串 - `'example@example.com'` |
## 捐赠
你的馈赠将助力我更好的去贡献,谢谢!
[PayPal](https://paypal.me/godfather1103?locale.x=zh_XC)
支付宝


微信

## 写在最后
1. 该插件相关创意来源于[docker-maven-plugin](https://github.com/spotify/docker-maven-plugin)
2. 从2.0版本开始api sdk改为使用[docker-java](https://github.com/docker-java/docker-java)