我正在尝试在组成后自动执行docker容器中某些命令的执行。我的第一个想法是使用gradle DockerExecContainer
任务(由docker插件提供),并从dockerCompose
扩展名(由docker compose插件提供)中检索目标容器ID。
我认为类似的方法会起作用:
plugins {
id 'com.avast.gradle.docker-compose' version '0.12.1'
id 'com.bmuschko.docker-remote-api' version '6.4.0'
}
import com.bmuschko.gradle.docker.tasks.container.DockerExecContainer
task setupPhabricator(type: DockerExecContainer) {
containerId.set(dockerCompose.servicesInfos.phabricator.firstContainer.containerId)
commands.add(['echo', '$PHABRICATOR_HOST'] as String[])
}
dockerCompose {
isRequiredBy(setupPhabricator)
}
此操作失败,因为dockerCompose.servicesInfos.phabricator
是null
。这是有道理的,因为在配置时容器尚未启动。
我认为我应该在执行阶段设置容器ID:
task setupPhabricator(type: DockerExecContainer) {
commands.add(['echo', '$PHABRICATOR_HOST'] as String[])
doFirst {
containerId.set(dockerCompose.servicesInfos.phabricator.firstContainer.containerId)
}
}
但这失败了:
No value has been specified for property 'containerId'
我想我这里缺少基本的东西,所以欢迎任何想法。