Docker-用服务env_file编写错误

我一直在努力通过一个.env文件将我的敏感数据(凭证)传递给docker集装箱。 我正在使用docker-compose,而我的docker-compose.yml文件如下所示:

services: some-service: env_file: - .env 

但是当我尝试做“docker-compose up”的时候,我得到了下面的错误:

  ERROR: In file './docker-compose.yml', service 'env_file' must be a mapping not an array. 

我的.env文件有类似的数据

id = 1234567890

pwd = my_pwd

我的文件中是否有缩进错误? 任何build议如何解决这个错误?

看起来这是你的YAML结构的一个问题。 这可能是您的- .env或缺less的服务名称之前缺less的空间。 尝试这个:

 services: some-service: env_file: - .env 

如果你只使用一个环境文件,你也可以写:

 services: some-service: env_file: .env 

请参阅: https : //docs.docker.com/compose/compose-file/#env_file

 ERROR: In file './docker-compose.yml', service 'env_file' must be a mapping not an array. 

错误说env_file -compose认为env_file是你的服务的名字,而不是服务上的设置。 这表明您没有正确缩进env_file节以在服务中。 YML语法是空白敏感的,所以仔细检查你的线条上的缩进。 如果找不到缩进的错误,请在您的问题中包含完整的docker-compose.yml文件,并将其与您的文件完全相同,以供我们进一步协助。

问题不在于缩进。 似乎现在正在工作。 我实际上不得不提及版本和构buildpath(他们在我的初始yml文件中缺less)。 所以最后的docker-compose文件如下所示:

 version: '3' services: some-service: build: . env_file: - .env 

或者如果你想,你可以把它与一个特定的图像名称关联起来:

 version: '3' services: some-service: build: . image: image_name:image_version env_file: - .env 

希望这会帮助遇到同样问题的人