docker - 组合后在docker容器中执行命令
问题描述
我正在尝试在组合后自动执行 docker 容器中的某些命令。我的第一个想法是使用 gradle任务(由 docker 插件提供)并从扩展(由 docker compose 插件提供DockerExecContainer
)中检索目标容器 id 。dockerCompose
我认为这样的事情会起作用:
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
is 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'
我想我在这里遗漏了一些基本的东西,所以欢迎任何想法。
解决方案
推荐阅读
- jquery - 带有“全部显示”选项的基本“单击显示”按钮
- python - 使用 get_quote_yahoo 查找多个股票的市值时,Ticker 对象不可迭代。TypeError:'Ticker' 对象不可迭代'
- node.js - 无法设置 cookie。提供背面和正面的codeSandBox的完整代码。有没有人看到问题。谢谢!快递 + Vue 3
- c++ - 双重使用新 int 的结果是什么?
- triggers - Gcloud 在 app.yaml 中为 appEngine 构建触发环境变量替换
- ms-access-2016 - ACCESS IIF 中的计算字段
- css - 使用 React Native 的 Flexbox 样式
- 2sxc - 2sxc RequestVerificationToken 不存在
- puppet - 在 Windows 10 中使用 puppet 复制 zip 文件并解压缩
- javascript - 滚动不适用于移动 PIXI JS