Amazon web services 使用ecs上下文时将环境变量传递给“docker compose”

Amazon web services 使用ecs上下文时将环境变量传递给“docker compose”,amazon-web-services,docker,docker-compose,environment-variables,amazon-ecs,Amazon Web Services,Docker,Docker Compose,Environment Variables,Amazon Ecs,我正在尝试使用最新docker cli公开的新ecs上下文。当我使用docker context create ecs my_context创建上下文时,我选择使用环境变量方法(推荐的方法),无论我如何尝试调用docker compose,它总是返回消息context requires credentials to passed as environment variables。在google中搜索此邮件不会返回任何内容:/ 我尝试过使用-e和--environment标志传递,我尝试过使用.e

我正在尝试使用最新docker cli公开的新ecs上下文。当我使用
docker context create ecs my_context
创建上下文时,我选择使用环境变量方法(推荐的方法),无论我如何尝试调用
docker compose
,它总是返回消息
context requires credentials to passed as environment variables
。在google中搜索此邮件不会返回任何内容:/

我尝试过使用
-e
--environment
标志传递,我尝试过使用
.env
文件和
--env文件
标志传递

docker --context my_ecs compose -f docker-compose.yml -f docker-compose.dev.yml -e AWS_ACCESS_KEY_ID=XXXXXXX -e AWS_SECRET_ACCESS_KEY=XXXXXXXX -e AWS_DEFAULT_REGION=XXXXXXXX up

如果我不使用环境变量方法,它会遇到另一个已知的(令人沮丧的)错误,即它使用了错误的aws区域,即使上下文是用正确的区域设置的。我觉得环境变量选项可以解决这个问题,如果我能让它看到环境变量的话。

我认为在
docker compose up
命令期间传递变量不起作用。其工作方式是在shell中导出访问密钥ID、机密访问密钥和区域变量,然后通过指向这些变量创建docker上下文

您可以通过启动
docker context create ecs myeccontext
,然后选择
AWS环境变量
以交互方式执行此操作,或者您可以从env运行
docker context create ecs myeccontext--from env


是的,如果您所指的是区域错误,那么区域错误是令人恼火的。

是的,这就是区域问题:windows shell中没有导出选项,这可能就是我正在访问windows的地方…:)。。。这是15年前的事了。别开玩笑了……我从来没有在Windows上使用过它,但我认为一个
SET
(而不是
EXPORT
)就可以了?是的,我已经尝试过
SET
,甚至手动添加了ENV变量,但它没有提取它们。不过,我发现了一件有趣的事情,
docker compose
cli自动在
.env
文件中拾取变量,甚至没有指定带有
--env file
标志的文件,这似乎是另一个bug:但是对于ecs集成,我需要将
docker
cli与新的
compose
选项一起使用。。。我不相信它会同样拾取
.env
文件,否则我可能不会有这个问题:DCan可以确认使用
docker-compose-f docker-compose.build.yml build
默认情况下也会拾取同一位置的
.env