在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):Transmode/gradle-docker开源软件地址(OpenSource Url):https://github.com/Transmode/gradle-docker开源编程语言(OpenSource Language):Groovy 84.8%开源软件介绍(OpenSource Introduction):Gradle Docker pluginThis plugin for Gradle adds the capability to build and publish Docker images from the build script. It is available through jCenter and MavenCentral. See the change log for information about the latest changes. Extending the application pluginThe gradle-docker plugin adds a task apply plugin: 'application'
apply plugin: 'docker' Executing the By default Note: The creation of the convention task
The |
Dockerfile instruction | Gradle task method |
---|---|
ADD |
addFile(Closure copySpec) |
addFile(String source, String dest) |
|
addFile(File source, String dest) |
|
CMD |
defaultCommand(List cmd) |
ENTRYPOINT |
entryPoint(List entryPoint) |
ENV |
setEnvironment(String key, String val) |
EXPOSE |
exposePort(Integer port) |
exposePort(String port) |
|
RUN |
runCommand(String cmd) |
USER |
switchUser(String userNameOrUid) |
VOLUME |
volume(String... paths) |
WORKDIR |
workingDir(String dir) |
Instead of defining the build instructions inline in the task it is also possible to supply an external Dockerfile. If the task property dockerfile
is set to the path of an existing Dockerfile the plugin will use this file instead to build the image.
You can even combine these two methods: Supplying an external Dockerfile and extending it by defining instructions in the task. The build instructions from the external Dockerfile are read first and the instructions defined in the task appended. If an external Dockerfile is supplied, the baseImage
property is ignored.
The plugin exposes configuration options on 2 levels: globally through a plugin extension and on a per task basis. The plugin tries to always set sensible defaults for all properties.
Configuration properties in the plugin extension docker
are applied to all Docker tasks. Available properties are:
dockerBinary
- The path to the docker binary.baseImage
- The base docker image used when building images (i.e. the name after FROM
in the Dockerfile).maintainer
- The name and email address of the image maintainer.registry
- The hostname and port of the Docker image registry unless the Docker Hub Registry is used.useApi
- Use the Docker Remote API instead of a locally installed docker
binary. See belowExample to set the base docker image and maintainer name for all tasks:
docker {
maintainer = 'John Doe <[email protected]>'
baseImage = 'johndoe/nextgenjdk:9.0'
}
All properties that are exposed through the plugin extension can be overridden in each task. The image tag is constructed according to:
tag = "${project.group}/${applicationName}:${tagVersion}"
Where:
project.group
- This is a standard Gradle project property. If not defined, the {project.group}/
is omitted.applicationName
- The name of the application being "dockerized".tagVersion
- Optional version name added to the image tag name. Defaults to project.version
or "latest" if project.version
is unspecified.The following example task will tag the docker image as org.acme/bar:13.0
:
...
group = 'org.acme'
...
task fooDocker(type: Docker) {
applicationName = 'foobar'
tagVersion = '13.0'
}
If no base image is configured through the extension or task property a suitable image is chosen based on the project's targetCompatibility
. A project targeting Java 7 will for instance get a default base image with a Java 7 runtime.
By default the plug-in will use the docker
command line tool to execute any docker commands (such as build
and push
). However, it can be configured to use the Docker Remote API instead via the useApi
extension property:
docker {
useApi true
}
Use of the remote API requires that the Docker server be configured to listen over HTTP and that it have support for version 1.11 of the API (connecting over Unix Domain sockets is not supported yet). The following configuration options are available:
hostUrl
- set the URL used to contact the Docker server. Defaults to http://localhost:2375
apiUsername
- set the username used to authenticate the user with the Docker server. Defaults to nil
which means no authentication is performed.apiPassword
- set the password used to authenticate the user with the Docker server.apiEmail
- set the user's email used to authenticate the user with the Docker server.For example:
docker {
useApi true
hostUrl 'http://myserver:4243'
apiUsername 'user'
apiPassword 'password'
apiEmail '[email protected]'
}
The plugin is built with Gradle 2.x and thus needs version 2.0 or higher to work due to a newer version of Groovy included in Gradle 2.x (2.3 vs. 1.8.6). To use the plugin with Gradle 1.x you have to add Groovy's upward compatibility patch by adding the following line to your build file:
buildscript {
// ...
dependencies {
classpath 'se.transmode.gradle:gradle-docker:1.2'
classpath 'org.codehaus.groovy:groovy-backports-compat23:2.3.5'
}
}
If you are not using Docker's remote API (useApi = false
, i.e. the default behaviour) you need to have Docker installed locally in order to build images. However if the dryRun
task property is set to true
all calls to Docker are disabled. In that case only the Dockerfile and its context directory will be created.
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论