2016-08-05 92 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