Bak*_*aku 31 docker docker-compose
嗨在 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)
Run Code Online (Sandbox Code Playgroud)
但它返回给我一个类似主题的错误。任何人都知道如何传递这些变量?
谢谢
小智 30
对于在尝试传递 DJANGO 密钥时遇到此错误的任何人,如果您的密钥包含“$”,请在其后添加另一个“$”
DJANGO_SECRET_KEY: "tj...........t2$8" # Original Key
DJANGO_SECRET_KEY: "tj...........t2$$8"
Run Code Online (Sandbox Code Playgroud)
尝试使用 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
Run Code Online (Sandbox Code Playgroud)
你可以用另一个 $ [像这样 $$() ] 转义 $ 符号参考:https : //docs.docker.com/compose/environment-variables/#the-env-file
如果您使用冒号来定义默认值,则需要使用减号。
所以而不是:
ENV_VAR=${ENV_VAR:100}
Run Code Online (Sandbox Code Playgroud)
你想使用:
ENV_VAR=${ENV_VAR:-100}
Run Code Online (Sandbox Code Playgroud)
如果 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)
Run Code Online (Sandbox Code Playgroud)
如果这个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)
Run Code Online (Sandbox Code Playgroud)
然后在 docker-compose.yml 中重用它,就像
environment:
- AWS_ACCESS_KEY_ID=${HOST_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${HOST_AWS_SECRET_ACCESS_KEY}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32242 次 |
| 最近记录: |