2016-08-05 23 views
1

Ich habe keine Probleme Docker von cmd Linie ausgeführt wird:läuft Docker von gradle: Das Bild kann nicht ziehen

docker run -p 5432:5432 -it --rm postgres:9.5.2` 

, aber wenn ich es von gradle tun, dcompose plugin mit, ich erhielt

Could not evaluate onlyIf predicate for task ':pullDatabaseImage'. 
> Docker command failed: Certificate path (DOCKER_CERT_PATH) '/home/xxx/.docker/certs' doesn't exist. 

meine Config :

plugins { 
    id "com.chrisgahlert.gradle-dcompose-plugin" version "0.3.2" 
} 

dcompose { 
    database { 
     image = 'postgres:9.5.2' // Required 
    } 
} 

test { 
    dependsOn startDatabaseContainer 
    finalizedBy removeDatabaseContainer 
} 

, was falsch ist? Wie kann ich Docker von Gradle laufen?

Antwort

1

Ich habe festgestellt, dass Docker Unix-Sockets für ungesicherte lokale Kommunikation verwendet, aber es erfordert benutzerdefinierte Zertifikate für Netzwerkkommunikation/IP-Sockets. Plugin com.chrisgahlert.gradle-dcompose-plugin nutzt Netzwerkkommunikation, so dass es keine Möglichkeit gibt, es aus der Box funktionieren zu lassen (jeder Entwickler, der es lokal ausführen möchte, müsste sein Andockfenster konfigurieren). Also habe ich aufgehört, dieses Plugin zu verwenden, und habe den Systembefehl (docker run ...) von Java manuell ausgeführt. Auf diese Weise ist keine zusätzliche Sicherheitskonfiguration erforderlich.

+0

Hallo, können Sie Ihre Antwort akzeptieren, so dass die Frage nicht als unbeantwortet angezeigt wird? Vielen Dank! –

0

Entschuldigung für die späte Antwort.

Verwenden Sie die neueste Plugin-Version (derzeit 0.8.0). Dies verwendet die neueste docker-java-Bibliothek, die für die Kommunikation mit dem Docker-Host verantwortlich ist. In dieser Version sollte es möglich sein, sich mit einem lokalen Unix-Socket zu verbinden.

Wenn das nicht hilft: Versuchen Sie, die Umgebungsvariable unset DOCKER_TLS_VERIFY zu deaktivieren.