首页 > 解决方案 > 在 docker-compose.yml 中将环境变量从一个服务传递到另一个服务

问题描述

有没有办法将环境变量从一个服务传递到 docker-compose.yml 中的另一个服务?

services:
 testService:
    environment:
      TEST_KEY: 1234
 testServiceTests:
    environment:
      TEST_KEY: I want to pull in the value 1234 here from service1
    

标签: dockerdocker-compose

解决方案


不。

但是,还有一个替代方案。您可以在 Docker Compose 文件中为所有服务提供环境变量,方法是在您运行 Compose 时从您的 shell 公开它们或使用特殊.env文件,请参阅文档

使用这种方法,您将拥有一个全局(用于 Compose)环境变量,比如说GLOBAL_TEST_KEY(它不需要具有不同的名称),并且您将能够在多个服务之间共享它:

services:
 testService:
    environment:
      TEST_KEY: ${GLOBAL_TEST_KEY}
 testServiceTests:
    environment:
      TEST_KEY: ${GLOBAL_TEST_KEY}

接着:docker-compose run -e GLOBAL_TEST_KEY="Some value" ....

或者,创建一个名为.env并列的文件docker-compose.yaml,在.env

GLOBAL_TEST_KEY="Some value"

接着:docker-compose run ...

注意无需引用.env,因为它默认包含


推荐阅读