如果 docker-compose
与 docker-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-compose
和 helm chart
提供单独的环境会很好。
希望这对您有所帮助。
关于docker - Helm和Docker-Compose共享同一个环境文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57386315/