[英]docker unable to use secrets inside docker-compose.yml
我正在尝试使用 docker secrets 来存储在 AWS Elastic Beanstalk 上使用的外部 api 密钥,尽管我似乎遗漏了什么? 这是我当前配置的截图和模糊的 api 密钥:
docker-compose.yml 与秘密:
version: "3.8"
services:
backend:
image: "s_censored_p:latest"
environment:
bestbuy.api.url: /run/secrets/api_key
ports:
- "80:8080"
secrets:
- api_key
secrets:
api_key:
external: true
docker-compose.yml 没有秘密:
version: "3.8"
services:
backend:
image: "s_censored_p:latest"
environment:
bestbuy.api.url: "https://api.bestbuy.com/v1/products(sku in(6462266))?pageSize=100&cursorMark=*&format=csv&apiKey=qU_censored_CJ"
ports:
- "80:8080"
码头码头细节
➜ ~ docker secret ls
ID NAME DRIVER CREATED UPDATED
pp8vsbxqk9z85zmdlnaxrudsl api_key 2 hours ago 2 hours ago
➜ ~
➜ ~ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
gen8g85of3b2 api_key replicated 1/1 s_censored_p:latest
➜ ~
➜ ~ docker exec -it $(docker ps --filter name=api_key -q) cat /run/secrets/api_key
https://api.bestbuy.com/v1/products(sku in(6462266))?pageSize=100&cursorMark=*&format=csv&apiKey=qU_censored_CJ%
➜ ~
➜ ~
environment:
bestbuy.api.url: /run/secrets/api_key
这些bestbuy.api.url
URL 的值设置为字符串/run/secrets/api_key
-- 除非您的应用程序知道检查bestbuy.api.url
是否是文件路径并从那里加载 URL,否则您将需要一个额外的步骤。 Docker 不会自动为您将机密加载到环境变量中,这是他们深思熟虑的安全决策。
我经常看到的 Docker 约定是对这些类型的中间变量使用_FILE
后缀 - 在这种情况下,我猜是bestbuy.api.url_FILE
- 然后从该文件加载机密(如果指定),而不是bestbuy.api.url
变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.