繁体   English   中英

docker 无法使用 docker-compose.yml 中的秘密

[英]docker unable to use secrets inside docker-compose.yml

我正在尝试使用 docker secrets 来存储在 AWS Elastic Beanstalk 上使用的外部 api 密钥,尽管我似乎遗漏了什么? 这是我当前配置的截图和模糊的 api 密钥:

with_secret

没有秘密

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM