docker - Helm和Docker-Compose共享同一个环境文件的方法

标签 docker kubernetes containers kubernetes-helm amazon-eks

如果 docker-composedocker-compose.yml 位于同一目录,则 docker-compose 将自动读取 .env 文件。考虑到这一点,我继续在 .env 文件中定义 app-container 环境变量来存储容器 URL,如下所示:

app-container=12345.dkr.ecr.us-west-2.amazonaws.com/container-image:v003

然后,在 docker-compose.yml 文件中,我将容器 URL 替换为环境变量 app-container

    version: '3'

    services:
      app1:
        build:
          context: .
          dockerfile: my.dockerfile
          image: ${app-container}

如果我可以传递相同的 app-container 环境变量来替换 Helm 的 values.yaml 文件中定义的容器 URL,那就太好了。因此,不是显式存储容器的 URL

app:
  image: 12345.dkr.ecr.us-west-2.amazonaws.com/container-image:v003

Helm 的 values.yaml 文件可以使用相同的 app-container 环境变量,该变量已在 .env 文件中定义并由docker-compose。 Helm 的 values.yaml 文件可以简单地定义为:

app:
  image: ${app-container}

我想知道是否可以在 docker-compose 和 Helm 之间共享相同的 env 文件?

最佳答案

试试这个,它的小技巧:

  • 首先从.env 文件设置环境变量。
$ cat .env
appcontainer=12345.dkr.ecr.us-west-2.amazonaws.com/container-image:v003
$ while read LINE; do export "$LINE"; done < .env

注意:您需要从 app-container 名称中删除 -。否则,您将在设置环境变量时遇到此错误 bash: export: app-container=12345.dkr.ecr.us-west-2.amazonaws.com/container-image:v003': not a valid identifier

  • 现在使用 --set 选项在 values.yaml 中显式设置该环境。
helm install --set app.image=$appcontainer ./mychart

但理想情况下,为您的 docker-composehelm chart 提供单独的环境会很好。

希望这对您有所帮助。

关于docker - Helm和Docker-Compose共享同一个环境文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57386315/

相关文章:

go - 无法检测到 Kubernetes 中的 tcp 服务没有带有 golang 应用程序的 pod

docker - 云容器的硬件支持

c++ - qStableSort 是否保留等效元素的顺序?

powershell - 本地 New-PSSession 在基于官方 powershell linux 的 docker 图像中失败

docker - dotnet restore 在本地工作但在构建 Docker 容器时失败

docker - 如何通过 Kubernetes 中的另一个 Pod 访问部署在一个 Pod 上的服务?

kubernetes - 如何设置显示给 Pod 的 CPU 内核数

docker - 带有 webpack 的整体 docker 应用程序

Flutter - 容器高度与子 Text.length 相同?

docker - 如何确定哪些容器使用 docker 卷?