使用 ecs 上下文时将环境变量传递给“docker-compose”
Passing environment variables to `docker-compose` when using ecs context
我正在尝试使用最新 docker cli 公开的新 ecs 上下文。当我使用 docker context create ecs my_context
创建上下文时,我 select 使用环境变量方法(推荐方式),现在无论我如何尝试调用 docker compose
,它总是 returns消息 context requires credentials to be passed as environment variables
。正在 google returns 中搜索此消息:/
我尝试使用 -e
和 --environment
标志传递,我尝试使用 .env
文件和 --env-file
标志。
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、秘密访问密钥和区域变量,然后通过指向变量 as shown here.[= 创建 docker 上下文16=]
您可以通过启动 docker context create ecs myecscontext
然后选择 AWS environment variables
以交互方式执行此操作,或者您可以 运行 docker context create ecs myecscontext --from-env
.
是的,区域错误很烦人,如果 this 是您所指的。
Google 搜索引导我到这个 post,(我没有使用 Windows 但 aws cloud9 IDE,)
我可以通过将虚拟值传递给环境变量来摆脱消息 context requires credentials to be passed as environment variables
,它是这样的。
$ docker context create ecs myecscontext
? Create a Docker context using: AWS environment variables
Successfully created ecs context "myecscontext"
$ docker context use myecscontext
myecscontext
$ docker context ls
context requires credentials to be passed as environment variables
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
myecscontext * ecs credentials read from environment
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context use default
default
$ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
myecscontext ecs credentials read from environment
$ docker context rm myecscontext
myecscontext
我不得不使用 source ~/.bash_profile
为我的终端提供资源,因为我使用 .bashrc
作为我的源,并且其中没有我的环境变量。
在 Linux 或具有 Environment variables to configure the AWS CLI 的 MacO 上修改和导出环境变量:
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-west-2
稍后,您可以使用此命令查看选项:
docker context create ecs --help
说明:为 Amazon ECS 创建上下文
用法:
docker 上下文创建 ecs CONTEXT [标志]
标志:
--access-keys string
:使用文件中的 AWS 访问密钥
--description string
:上下文描述
--from-env
:使用 AWS 环境变量作为配置文件或凭证和区域
-h
、--help
:ecs 帮助
--local-simulation
:为ECS本地模拟端点创建上下文
--profile string
:使用现有的 AWS 配置文件
回答:docker context create ecs CONTEXT --from-env
我正在尝试使用最新 docker cli 公开的新 ecs 上下文。当我使用 docker context create ecs my_context
创建上下文时,我 select 使用环境变量方法(推荐方式),现在无论我如何尝试调用 docker compose
,它总是 returns消息 context requires credentials to be passed as environment variables
。正在 google returns 中搜索此消息:/
我尝试使用 -e
和 --environment
标志传递,我尝试使用 .env
文件和 --env-file
标志。
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、秘密访问密钥和区域变量,然后通过指向变量 as shown here.[= 创建 docker 上下文16=]
您可以通过启动 docker context create ecs myecscontext
然后选择 AWS environment variables
以交互方式执行此操作,或者您可以 运行 docker context create ecs myecscontext --from-env
.
是的,区域错误很烦人,如果 this 是您所指的。
Google 搜索引导我到这个 post,(我没有使用 Windows 但 aws cloud9 IDE,)
我可以通过将虚拟值传递给环境变量来摆脱消息 context requires credentials to be passed as environment variables
,它是这样的。
$ docker context create ecs myecscontext
? Create a Docker context using: AWS environment variables
Successfully created ecs context "myecscontext"
$ docker context use myecscontext
myecscontext
$ docker context ls
context requires credentials to be passed as environment variables
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
myecscontext * ecs credentials read from environment
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context use default
default
$ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
myecscontext ecs credentials read from environment
$ docker context rm myecscontext
myecscontext
我不得不使用 source ~/.bash_profile
为我的终端提供资源,因为我使用 .bashrc
作为我的源,并且其中没有我的环境变量。
在 Linux 或具有 Environment variables to configure the AWS CLI 的 MacO 上修改和导出环境变量:
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-west-2
稍后,您可以使用此命令查看选项:
docker context create ecs --help
说明:为 Amazon ECS 创建上下文
用法: docker 上下文创建 ecs CONTEXT [标志]
标志:
--access-keys string
:使用文件中的 AWS 访问密钥--description string
:上下文描述--from-env
:使用 AWS 环境变量作为配置文件或凭证和区域-h
、--help
:ecs 帮助--local-simulation
:为ECS本地模拟端点创建上下文--profile string
:使用现有的 AWS 配置文件
回答:docker context create ecs CONTEXT --from-env