【发布时间】:2016-08-09 15:14:20
【问题描述】:
我想运行一些 docker 命令,例如
docker login -u foo -p bar myregistry
docker build --pull=true -t myregistry/myimage path/to/dockerfile
docker push myregistry/myimage
我已经为它尝试了几个插件,例如this one,但没有一个令人满意,或者我错过了什么......
我的问题是,在我的 gradle 任务中运行 docker 命令的最佳方式是什么
这是我的 build.gradle 文件以及我希望他做什么
import GenerateDockerFile
apply plugin : 'groovy'
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.7'
compile localGroovy()
compile gradleApi()
classpath 'com.bmuschko:gradle-docker-plugin:3.0.1'
}
def copyFiles() {
//Some stuff
}
def versionNumber(){
//Some stuff
}
def clean(){
exec {
executable "sh"
args "-c", "ls"
}
}
}
task build (){
copyFiles()
versionNumber()
def version = new File('tmp_version').text
def buildTag= ""
if (project.hasProperty('args')) {
buildTag = args
}
else{
buildTag = System.console().readLine 'Enter a build tag'
}
println "\nGenerating DockerFile for version $version with build tag $buildTag"
GenerateDockerFile.configure(version, buildTag);
println 'DockerFile generated'
//Execute docker commands here
// docker login ....
doLast {
clean()
}
}
如果可能的话,像 clean 方法中的 exec sh 这样的东西会是完美的。但是,如果一个插件可以轻松做到这一点,那也没关系
【问题讨论】:
标签: gradle deployment docker