gpt4 book ai didi

docker - 如何将环境变量传递给 docker-compose 的应用程序

转载 作者:行者123 更新时间:2023-12-04 18:19:07 25 4
gpt4 key购买 nike

我想传递由 docker-compose up 启动的应用程序可读的环境变量.

什么是正确的使用方法docker-compose up具有不同的配置设置?

我不想用 .env & environment: config 因为环境变量经常更改并且将 token 保存在文件中是不安全的。
docker-compose run -e确实有点作用,但失去了很多。
它不映射 docker-compose.yml 中定义的端口服务。
docker-compose.yml 中还定义了多个服务我不想使用 depends_on只是因为docker-compose up不起作用。

假设我在 docker-compose.yml 中定义了服务

    service-a:
build:
context: .
dockerfile: DockerfileA
command: node serviceA.js

在我的 serviceA.js ,我只是使用环境变量:
console.log("This is ", process.env.KEY, "running in service A");

当我跑 docker-compose run -e KEY=DockerComposeRun service-a我确实得到了 serviceA.js 读取的环境变量 KEY
This is  DockerComposeRun running in service A

但是,我只能运行一项服务。

我可以用 environment:docker-compose.yml
environment:
- KEY=DockerComposeUp

但是在我的用例中,每个 docker compose 都会有不同的环境变量值,这意味着我每次都需要在执行 docker-compose 之前编辑文件。

此外,不仅单个服务会使用相同的环境变量, .env甚至做得更好,但这是不希望的。

似乎没有办法对 docker-compose up 做同样的事情
我试过 KEY=DockerComposeUp docker-compose up ,
但我得到的是 undefined .

导出对我也不起作用,似乎它们都是关于为 docker-compose.yml 使用环境变量的而不是容器中的应用程序

最佳答案

您可以使用这样的环境:

    service-a:
build:
context: .
dockerfile: DockerfileA
command: node serviceA.js
environment:
KEY=DockerComposeRun

引用: https://docs.docker.com/compose/environment-variables/

关于docker - 如何将环境变量传递给 docker-compose 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54360196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com