2016-08-05 80 views
1

我從CMD線運行搬運工沒有問題:從gradle這個運行碼頭工人:不能拉圖像

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

但是當我從gradle這個做到這一點,利用dcompose plugin,我得到

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

我的配置:

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

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

test { 
    dependsOn startDatabaseContainer 
    finalizedBy removeDatabaseContainer 
} 

怎麼了?我如何從gradle運行docker?

回答

1

我發現docker使用Unix套接字進行不安全的本地通信,但它需要網絡通信/ IP套接字的自定義證書。插件com.chrisgahlert.gradle-dcompose-plugin使用網絡通信,因此無法使其開箱即用(每個想要在本地運行的開發人員都必須配置其碼頭工具)。所以我停止使用該插件並切換到從Java手動執行系統命令(docker run ...)。這樣不需要額外的安全配置。

+0

嗨,你能接受你的答案,以便該問題不顯示爲未答覆?謝謝! –

0

對不起,遲到的迴應。

嘗試使用最新的插件版本(當前爲0.8.0)。這使用最新的docker-java庫,負責與Docker主機進行通信。在這個版本中,應該可以連接到本地unix套接字。

如果這沒有幫助:嘗試取消設置環境變量unset DOCKER_TLS_VERIFY