如何通过相同的“docker-compose up”调用来分享所有docker集装箱之间的值?

上下文

我们正在将一个较旧的应用程序迁移到docker,并且作为第一步我们正在处理一些限制。 数据库还不能放在容器中,而且是我们团队中所有开发人员共享的。 所以这个问题是为了解决临时性的问题。

为了不与使用相同数据库的其他开发人员冲突,每个开发人员机器都有一个系统来启动应用程序,并为其机器所独有的值。 每个容器应该使用相同的值。

我们使用docker-compose来启动容器。 有没有办法提供一个(环境)variables,它被传播到所有的容器?

我如何去做:

docker-compose.yml看起来像这样:

 my_service: image: my_service:latest command: ./my_service.sh extends: file: base.yml service: base environment: - batch.id=${BATCH_ID} 

那么我认为运行BATCH_ID=$somevalue docker-compose up my_service会填写${BATCH_ID} ,但似乎并没有这样工作。

有另一种方法吗? 更好的方法?

可选:理想情况下,应该包含所有东西,以便开发人员只需调用docker-compose up my_service可以自己docker-compose up my_service一个计算值并传递给所有的容器。 但从我在网上看到的,我认为这是不可能的。

你是对的。 或者,您可以指定env var名称:

 my_service: environment: - BATCH_ID 

所以var BATCH_ID是从当前的BATCH_ID -compose执行范围中定义的; 并传递给同名的容器。

我不知道我改变了什么,但突然它按照描述工作。


BATCH_ID是主机上的环境variables的名称。
batch.id将是容器内的环境variables的名称。

 my_service: environment: - batch.id=${BATCH_ID}