2016-08-09 4 views
0

でコマンドを私はそのようなthis oneとして、それにはいくつかのプラグインを試してみましたが、それらのどれも満足しなかった、または多分私は何かが欠けています。 ..ドッカーを実行するとGradleの

私の質問、ここに私のGradleのタスク内

をドッキングウィンドウのコマンドを実行するための最良の方法は私の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() 
    } 
} 

可能であれば、クリーンメソッドのようなexec shのようなものが完璧です。しかし、プラグインが簡単にこれを行うことができれば、それもOKです

答えて

1

問題は、私がgradleが実際にどのように動作しているのか誤解していたことから生じました。 NPMを使用していくつかのプロジェクトをコンピュータにインストールしなくても、正常にビルドできたら、Dockerでも同じですが。私は間違っていましたが、NPMはNodeJSによって与えられたコマンドですが、Dockerは実際にはサービスです! 「

私はすべての

apt-get install docker.io 

をした後は大丈夫だったと私は最終的にあなたがこの権利を指している

def dockerTest(version, buildTag){ 
    exec { 
     executable "sh" 
     args "-c", "sudo docker ps -a" 
    } 
} 
2

私はそれを試していませんでしたが、答えに触発された答えはRun shell command in gradle but NOT inside a taskと、https://discuss.gradle.org/t/how-to-execute-shell-command-source-or-dot-doesnt-work-with-exec/7271/9のディスカッションにインスピレーションを受けましたか?あなたが試みることができる二つのコマンド

docker login localhost:8080 
docker build . 

を実行するための

:引数はリストに指定する必要があることを

def runDockerLogin(String target) { 
    exec { 
     executable "docker" 
     args "login", target 
    } 
} 

def runDockerBuild(String target) { 
    exec { 
     executable "docker" 
     args target 
    } 
} 

task doIt { 
    doLast { 
     runDockerLogin("localhost:8080") 
     runDockerBuild(".") 
    } 
} 

注意。例えば。あなたがrunDockerBuildを使用して

docker build -t fail . 

のようなコマンドを発行したい場合は、その後、私は期待している

runDockerBuild("-t fail .") 

は動作しません。その代わり、runDockerBuild

def runDockerBuild(String target) { 
    exec { 
     executable "docker" 
     args "-t", "fail", target 
    } 
} 

のようなものに書き換えることができ、右方向にこのポインティングですか?

+0

を使用して、私のドッキングウィンドウのコマンドを実行することができ、実際に私はこのような何かをしたいと思いますが、私はすることができますGradleが見つからないのでドッカーコマンドを実行しないでください。しかし、私は近づいています –

関連する問題