首页 > 解决方案 > 在 docker-compose.yml 配置中使用 Docker 秘密值

问题描述

我们正在使用 Docker swarm 来部署服务。我们想使用 Docker swarm secrets 来存储敏感数据(证书密码)。是否可以在docker-compose.yml文件中使用 Docker 机密值?Docker 客户端版本是20.10.6,Docker 引擎版本是19.03.12.

首先,我们在主机上创建秘密:

printf 'ThisIsCertificatePassword123' | docker secret create CertificatePassword -

码头工人-compose.yml

version: "3.7"
services:
  web:
    image: myimage:0.0.1
    environment:
      ASPNETCORE_ENVIRONMENT: Production
      ASPNETCORE_URLS: https://+443;http://+80
      ASPNETCORE_HTTPS_PORT: 443
      ASPNETCORE_Kestrel__Certificates__Default__Password: # how can we use value of CertificatePassword here?
      ASPNETCORE_Kestrel__Certificates__Default__Path: /https/certificate.pfx
    deploy:
      replicas: 1

secrets:
  CertificatePassword:
    external: true

我们部署堆栈:

docker stack deploy -c docker-compose.yml MyApplication

我们如何CertificatePassworddocker-compose.yml(at ASPNETCORE_Kestrel__Certificates__Default__Password) 中使用 Docker 机密的值?

标签: dockerdocker-composedocker-swarmdocker-secrets

解决方案


社区标准一直支持直接读取每个环境变量:“FOO”和间接“FOO_FILE”,其中 _FILE 变体是包含 FOO 的文件的路径。

所以,

SA_PASSWORD_FILE = /var/run/secrets/sql-password
SA_PASSWORD = Password123

应该是等价的,假设/var/run/secrets/sql-password包含Password123.

现在,我不知道 ASPNetCore 配置是否支持开箱即用,添加它似乎并不简单。


推荐阅读