Docker撰写:服务中“环境”选项的插值格式无效

时间:2018-04-18 10:33:26

标签: docker docker-compose

你好,在码头作曲中我有:

 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)

但它在主题中返回了一个错误。 任何人都知道如何传递这些变量?

由于

5 个答案:

答案 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"