你好,在码头作曲中我有:
environment:
- AWS_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)
- AWS_SECRET_ACCESS_KEY=$(aws --profile default configure get aws_secret_access_key)
但它在主题中返回了一个错误。 任何人都知道如何传递这些变量?
由于
答案 0 :(得分:1)
AFAIK无法在docker-compose
或.env
文件中执行此操作。但您可以设置一个环境变量并在docker-compose
文件中引用该变量:
$ export AWS_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)
<强>搬运工-compose.yaml 强>
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
答案 1 :(得分:1)
如果aws命令行实用程序嵌入在容器中,那么您可以重写这样的命令。
environment:
- AWS_ACCESS_KEY_ID=$$(aws --profile default configure get aws_access_key_id)
- AWS_SECRET_ACCESS_KEY=$$(aws --profile default configure get aws_secret_access_key)
如果这个aws
实用程序在主机系统上,那么您可以在shell上设置一些环境变量,如(.profile或.bashrc等)
export HOST_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)
export HOST_AWS_SECRET_ACCESS_KEY=$(aws --profile default configure get aws_secret_access_key)
然后在docker-compose.yml中重用它,如
environment:
- AWS_ACCESS_KEY_ID=${HOST_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${HOST_AWS_SECRET_ACCESS_KEY}
答案 2 :(得分:1)
对于尝试传递DJANGO密钥时遇到此错误的任何人,如果您的密钥包含'$',则在其后添加另一个'$'
DJANGO_SECRET_KEY: "tj...........t2$8" # Original Key
DJANGO_SECRET_KEY: "tj...........t2$$8"
答案 3 :(得分:0)
尝试使用ENV文件。
$ cat ./Docker/api/api.env
NODE_ENV=test
$ cat docker-compose.yml
version: '3'
services:
api:
image: 'node:6-alpine'
env_file:
- ./Docker/api/api.env
environment:
- NODE_ENV=production
您可以使用另一个$ [像这个$$()]转义$符号 参考:https://docs.docker.com/compose/environment-variables/#the-env-file
答案 4 :(得分:0)
我的问题是由于我一直在使用v2的docker-file而导致的, 标头版本3中需要定义的环境选项,而不是2
version: "3"