我想将我的awscredentials
文件添加到docker容器中,以便它可以访问aws api。凭据文件存在于我的主机/home/user/.aws/credentials
当从命令行运行容器时,我可以执行
docker run --rm -d -v /home/user/.aws/:/.aws:ro -d
--env AWS_CREDENTIAL_PROFILES_FILE=/.aws/credentials proj:latest
在docker组合中,我可以用volumes
属性挂载.aws
目录,如下所示:
services:
proj:
volumes:
- aws_credentials:/.aws:ro
environment:
AWS_CREDENTIAL_PROFILES_FILE: /.aws/credentials
volumes:
aws_credentials:
external: true
我的问题是,如何用数据填充外部aws_credentials卷?
无效的方法:
- 使用秘密而不是卷。我没有使用Docker swarm
- 使用config代替volumes。我没有使用Docker swarm
- 使用绑定挂载而不是卷。docker-compose文件被检入到源代码控制中,我不希望检入目录。
services:
proj:
volumes:
- /home/user/.aws/:/.aws:ro #<-- DO NOT WANT THIS IN SOURCE CONTROL
environment:
AWS_CREDENTIAL_PROFILES_FILE: /.aws/credentials
我想到的一个答案是使用环境变量,像这样:
services:
proj:
secrets:
- aws_credentials
environment:
AWS_CREDENTIAL_PROFILES_FILE: /run/secrets/aws_credentials
secrets:
aws_credentials:
file: ${awscredfile}
并确保awscredfile被加载到docker compose的父进程的环境中,或者在带有--env-file
参数的env文件中传递给docker compose。