我一直在努力通过.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
我的文件中是否有缩进错误?有关如何解决此错误的任何建议吗?
答案 0 :(得分:0)
看起来这是您的YAML结构的问题。在curl -X POST http://localhost:8000/products/ -H 'ContentType: application/json' -d '{"pictures": [{"description": "first one"}, {"description": "second one"}], "product_name": "foobar"}'
或缺少的服务名称之前,它可能是缺少的空间。试试这个:
- .env
如果您只使用一个环境文件,您也可以写:
services:
some-service:
env_file:
- .env
答案 1 :(得分:0)
ERROR: In file './docker-compose.yml', service 'env_file' must be a mapping not an array.
错误说docker-compose认为env_file
是服务的名称,而不是服务的设置。这表示您没有正确缩进服务中的env_file
部分。 YML语法对空白区域敏感,因此请仔细检查线条上的缩进。如果您在缩进时找不到错误,请在您的问题中包含完整的docker-compose.yml文件,该文件与文件中的文件完全一致,以便我们进一步协助。
答案 2 :(得分:0)
问题不在于缩进。好像它现在正在运作。我实际上不得不提到版本和构建路径(它们在我的初始yml文件中丢失了)。所以最终的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
希望这可以帮助遇到同样问题的人