簡體   English   中英

在不將文件位置暴露給源代碼管理的情況下向容器添加秘密

[英]add a secret to container without exposing file locations to source control

我想將我的 aws credentials文件添加到 docker 容器中,以便它可以訪問 AWS api。 憑據文件存在於我的主機中/home/user/.aws/credentials

從命令行運行容器時,我可以

docker run --rm -d -v /home/user/.aws/:/.aws:ro -d \
--env AWS_CREDENTIAL_PROFILES_FILE=/.aws/credentials proj:latest

在 docker compose 中,我可以使用volumes屬性掛載.aws目錄,如下所示:

services:
  proj:
   volumes:
    - aws_credentials:/.aws:ro
   environment:
    AWS_CREDENTIAL_PROFILES_FILE: /.aws/credentials
volumes:
  aws_credentials:
   external: true

我的問題是,如何用數據填充外部 aws_credentials 卷?

無效的方法:

  • 使用機密而不是卷。 我沒有使用 Docker 群
  • 使用配置而不是卷。 我沒有使用 Docker 群
  • 使用綁定安裝而不是卷。 docker-compose 文件被簽入源代碼管理,我不想簽入目錄。
services:
  proj:
   volumes:
    - /home/user/.aws/:/.aws:ro #<-- DO NOT WANT THIS IN SOURCE CONTROL
   environment:
    AWS_CREDENTIAL_PROFILES_FILE: /.aws/credentials

我想出的一個答案是像這樣使用環境變量:

services:
  proj:
   secrets:
    - aws_credentials
   environment:
    AWS_CREDENTIAL_PROFILES_FILE: /run/secrets/aws_credentials
secrets:
  aws_credentials:
    file: ${awscredfile}

並確保 awscredfile 加載到 docker compose 的父進程的環境中,或者在帶有--env-file參數的 env 文件中傳遞給 docker compose。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM