覆盖 DockerStartContainer 上的环境变量

Override Environment Variables on DockerStartContainer

我正在使用以下插件 https://github.com/bmuschko/gradle-docker-plugin,我正在尝试弄清楚如何将环境变量传递给任务类型 DockerStartContainer 中的 docker 容器。

当我运行以下命令时出现错误:

Could not set unknown property 'VAR1' for task ':createDockerContainer' of type com.bmuschko.gradle.docker.tasks.container.DockerCreateContainer.

task buildDockerImage(type: DockerBuildImage) {
  dependsOn buildDockerAssets
  inputDir = buildDockerfile.destFile.parentFile
  tags = [ "${dockerRepo}:${project.findProperty('dockerTag') ?: 'latest'}".toString() ]
}

task createDockerContainer(type: DockerCreateContainer) {
  dependsOn buildDockerImage
  targetImageId { buildDockerImage.getImageId() }
  VAR1 = project.findProperty('VAR1') ?: 'va1'
  VAR2 = project.findProperty('VAR2') ?: 'val2'
}

我想我需要做类似 env = ["var1=val1", "var2=val2"] 的事情,但我不确定。有人知道解决这个问题的正确方法吗?

VAR1VAR2 不作为 DockerCreateContainer 类型的属性存在。查看可以修改的source code, there is an env property

示例:

task createDockerContainer(type: DockerCreateContainer) {
  dependsOn buildDockerImage
  targetImageId { buildDockerImage.getImageId() }
  env = [
      "VAR1=${project.findProperty('VAR1') ?: 'va1'}",
      "VAR2=${project.findProperty('VAR2') ?: 'val2'}"
  ]
}

2018/07/09 编辑:插件的最新版本 (see the release notes) 弃用了 env 属性 以支持使用名为 envVars 的新 属性,即 Map<?, ?>。发行说明指出它是在版本 3.4.0 中发布的。

现在可以在 test code(包含在下面)中看到有关如何配置任务的示例:

task createContainer(type: DockerCreateContainer) {
  dependsOn pullImage
  targetImageId { pullImage.getImageId() }
  cmd = ['env']

  // deprecated, use the below examples
  env = ['HELLO=WORLD']

  // add by appending new map to current map
  envVars << ['one' : 'two', 'three' : 'four']

  // add by calling helper method N number of times
  withEnvVar('five', 'six')
  withEnvVar('seven', 'eight')
}