我从cmd行运行docker没有问题:
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?
答案 0 :(得分:1)
我发现docker使用Unix套接字进行不安全的本地通信,但它需要自定义证书用于网络通信/ IP套接字。插件com.chrisgahlert.gradle-dcompose-plugin
使用网络通信,因此没有办法让它开箱即用(每个想在本地运行它的开发人员都必须配置他的docker)。所以我停止使用该插件并切换到从Java手动执行系统命令(docker run ...
)。这样就不需要额外的安全配置了。
答案 1 :(得分:0)
对于迟到的回复感到抱歉。
尝试使用最新的插件版本(目前为0.8.0)。这使用最新的docker-java库,它负责与Docker主机通信。在这个版本中,应该可以连接到本地unix套接字。
如果这没有帮助:尝试取消设置环境变量unset DOCKER_TLS_VERIFY
。