组成后在Docker容器中执行命令

时间:2020-06-24 06:18:43

标签: docker gradle docker-compose

我正在尝试在组成后自动执行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.phabricatornull。这是有道理的,因为在配置时容器尚未启动。

我认为我应该在执行阶段设置容器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'

我想我这里缺少基本的东西,所以欢迎任何想法。

0 个答案:

没有答案