gradle-docker-plugin: com.github.dockerjava.shaded.org.apache.http.client.ClientProtocolException

Hi,

I try to use this gradle-plugin for a cuba-application.

My gradle.build:

buildscript {
    ext.cubaVersion = '6.8.6'
    repositories {
        
        maven {
            url 'https://repo.cuba-platform.com/content/groups/work'
            credentials {
                username(rootProject.hasProperty('repoUser') ? rootProject['repoUser'] : 'cuba')
                password(rootProject.hasProperty('repoPass') ? rootProject['repoPass'] : 'cuba123')
            }
        }
        
    }
    dependencies {
        classpath "com.haulmont.gradle:cuba-plugin:$cubaVersion"
		
		//added docker-plugin 
		classpath "com.bmuschko:gradle-docker-plugin:3.2.7"
    }
}


//import classes 
import com.bmuschko.gradle.docker.tasks.image.Dockerfile
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
import com.bmuschko.gradle.docker.DockerRegistryCredentials

docker {
	url = 'tcp://127.0.0.1:2375'
}

//define variables 
def dockerRegistryCredentials = new DockerRegistryCredentials()
dockerRegistryCredentials.email = rootProject.hasProperty('email') ? rootProject['email'] : 'default_value'
dockerRegistryCredentials.password = rootProject.hasProperty('password') ? rootProject['password'] : 'default_value'
dockerRegistryCredentials.username = rootProject.hasProperty('username') ? rootProject['username'] : 'default_value'
dockerRegistryCredentials.url = rootProject.hasProperty('url') ? rootProject['url'] : 'default_value'

def modulePrefix = 'app'

def globalModule = project(":${modulePrefix}-global")
def coreModule = project(":${modulePrefix}-core")
def guiModule = project(":${modulePrefix}-gui")
def webModule = project(":${modulePrefix}-web")

def servletApi = 'org.apache.tomcat:tomcat-servlet-api:8.0.26'
apply(plugin: 'eclipse')
apply(plugin: 'java')
apply(plugin: 'cuba')

cuba {
    artifact {
        group = 'com.company.newpro'
        version = '0.1'
        isSnapshot = true
    }
    tomcat {
        dir = "$project.rootDir/deploy/tomcat"
    }
}

dependencies {
    appComponent("com.haulmont.cuba:cuba-global:$cubaVersion")

}

def mysql = 'mysql:mysql-connector-java:5.1.38'

configure([globalModule, coreModule, guiModule, webModule]) {
    apply(plugin: 'java')
    apply(plugin: 'maven')
    apply(plugin: 'eclipse')
apply(plugin: 'cuba')

    dependencies {
        testCompile('junit:junit:4.12')
    }

    task sourceJar(type: Jar) {
        from file('src')
        classifier = 'sources'
    }

    artifacts {
        archives sourceJar
    }
}

configure(globalModule) {
    task enhance(type: CubaEnhancing)

    
}

configure(coreModule) {

    configurations {
        jdbc
        dbscripts
    }

    dependencies {
        compile(globalModule)
        provided(servletApi)
        jdbc(mysql)
        testRuntime(mysql)

    }

    task cleanConf(description: 'Cleans up conf directory') {
        doLast {
            def dir = new File(cuba.tomcat.dir, "/conf/${modulePrefix}-core")
            if (dir.isDirectory()) {
                ant.delete(includeemptydirs: true) {
                    fileset(dir: dir, includes: '**/*', excludes: 'local.app.properties')
                }
            }
        }
    }

    task deploy(dependsOn: [assemble, cleanConf], type: CubaDeployment) {
        appName = "${modulePrefix}-core"
        appJars(modulePrefix + '-global', modulePrefix + '-core')
    }

    task createDb(dependsOn: assembleDbScripts, description: 'Creates local database', type: CubaDbCreation) {
        //removed for this example 
    }

    task updateDb(dependsOn: assembleDbScripts, description: 'Updates local database', type: CubaDbUpdate) {
        //removed for this example 
    }
}

configure(guiModule) {
    dependencies {
        compile(globalModule)

    }

    task deployConf(type: Copy) {
        from file('src')
        include "com/company/newpro/**"
        into "$cuba.tomcat.dir/conf/${modulePrefix}"
    }
}

configure(webModule) {
    configurations {
        webcontent
    }

    dependencies {
        provided(servletApi)
        compile(guiModule)

    }
    
    task webArchive(type: Zip) {
        from file("$buildDir/web")
        from file('web')
        classifier = 'web'
    }

    artifacts {
        archives webArchive
    }

    task deployConf(type: Copy) {
        from file('src')
        include "com/company/newpro/**"
        into "$cuba.tomcat.dir/conf/${modulePrefix}"
    }

    task clearMessagesCache(type: CubaClearMessagesCache) {
        appName = "${modulePrefix}"
    }
    deployConf.dependsOn clearMessagesCache

    task cleanConf(description: 'Cleans up conf directory') {
        doLast {
            def dir = new File(cuba.tomcat.dir, "/conf/${modulePrefix}")
            if (dir.isDirectory()) {
                ant.delete(includeemptydirs: true) {
                    fileset(dir: dir, includes: '**/*', excludes: 'local.app.properties')
                }
            }
        }
    }

    task deploy(dependsOn: [assemble, cleanConf], type: CubaDeployment) {
        appName = "${modulePrefix}"
        appJars(modulePrefix + '-global', modulePrefix + '-gui', modulePrefix + '-web')
    }
}





task undeploy(type: Delete, dependsOn: ":${modulePrefix}-web:cleanConf") {
    delete("$cuba.tomcat.dir/shared")
    delete("$cuba.tomcat.dir/webapps/${modulePrefix}-core")
    delete("$cuba.tomcat.dir/webapps/${modulePrefix}")
}

task restart(dependsOn: ['stop', ":${modulePrefix}-core:deploy", ":${modulePrefix}-web:deploy"], description: 'Redeploys applications and restarts local Tomcat') {
    doLast {
        ant.waitfor(maxwait: 6, maxwaitunit: 'second', checkevery: 2, checkeveryunit: 'second') {
            not {
                socket(server: 'localhost', port: '8787')
            }
        }
        start.execute()
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.3.1'
}

apply from: 'extra.gradle'

//added 
apply plugin: 'com.bmuschko.docker-remote-api'


task buildUberJar(type: CubaUberJarBuilding) {
    singleJar = true
    logbackConfigurationFile = 'etc/uber-jar-logback.xml'
    coreJettyEnvPath = 'modules/core/web/META-INF/jetty-env.xml'
    appProperties = ['cuba.automaticDatabaseUpdate' : true]
}

//copy trustStore file to target-directory 
task copyFile(type: Copy, dependsOn: buildUberJar) {
  from 'truststore'
  into 'build/distributions/uberJar'
}

//create Dockerfile to destination target-directory 
task createDockerfile(type: Dockerfile, dependsOn: copyFile)  {
    //removed for this example 
}

//builds an image from a Dockerfile 
task buildImage(type: DockerBuildImage, dependsOn: createDockerfile) {
    inputDir = createDockerfile.destFile.parentFile
	tag = 'nurEinTest'
    registryCredentials = dockerRegistryCredentials
}


when I run this command: gradle buildImage -Pemail=myMail -Pusername=myUsername -Ppassword=myPassword -Purl=hub.docker.myCompany.com

I get this problem:

  • What went wrong: A problem occurred evaluating root project ‘newPro’. > Could not find method docker() for arguments [build_3773gpagu1navtx0av3me9mfs$_run_closure1@d865c9b] on root project 'newPro' of type org.gradle.api.Project.

If I run this: gradle buildImage -Pemail=myMail -Pusername=myUsername -Ppassword=myPassword -Purl=hub.docker.myCompany.com -PdockerServerUrl=tcp://127.0.0.1:2375

and remove the closure of “docker” from the code above, I get this problem:

com.github.dockerjava.shaded.org.apache.http.client.ClientProtocolException
at com.github.dockerjava.shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
at com.github.dockerjava.shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
at com.github.dockerjava.shaded.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435)
at com.github.dockerjava.shaded.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)
at com.github.dockerjava.shaded.org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701)
at com.github.dockerjava.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at com.github.dockerjava.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at com.github.dockerjava.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at com.github.dockerjava.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at com.github.dockerjava.shaded.org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697)
at com.github.dockerjava.shaded.org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448)
at com.github.dockerjava.shaded.org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:349)
at com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29)
at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50)
at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24)
Caused by: com.github.dockerjava.shaded.org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
at com.github.dockerjava.shaded.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:107)
at com.github.dockerjava.shaded.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at com.github.dockerjava.shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
... 14 more
Caused by: java.net.SocketException: Connection reset by peer: socket write error

I dont know what to do. I am using a docker for windows with proxy.

If someone could help me out, I would be very thankful

Kind regards

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 24

Most upvoted comments

@cdancy yes its a good idea, I dont think about, thanks I will try