6

以下是具有密码的 docker-compose 文件的片段:

test:
  build: ../../
  dockerfile: docker/dev/Dockerfile
  volumes_from:
    - cache
  links:
    - db
  environment:
    DJANGO_SETTINGS_MODULE: todobackend.settings.test
    MYSQL_HOST: db
    MYSQL_USER: root
    MYSQL_PASSWORD: password
    TEST_OUTPUT_DIR: /reports

db:
  image: mysql:5.6
  hostname: db
  expose:
    - "3386"
  environment:
    MYSQL_ROOT_PASSWORD: password

在 AWS 环境中运行此文件,

可以在 s3 中使用 KMS 存储,另一种方法是 AWS 参数存储

使用 构建 dockerfile 和启动容器docker-compose时,如何安全地维护秘密,而不将其暴露给文本文件?任何代码片段...

4

2 回答 2

1

您可以使用 ECS 和 Secrets Manager 之间的集成,将对存储在 Secrets Manager 中的 Secrets 的引用放在 ECS 任务定义中,然后将它们作为环境变量引用。ECS 文档提供了一个简短的教程(还有更详细的博客文章)。

于 2019-10-23T21:45:55.347 回答
1

能想出几种可能的办法。

  1. 将秘密存储在环境变量中引用您的撰写文件中的环境变量,如下所示
environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:

没有任何值的键在机器上解析为它们的值。

另一种方法可能是使用docker secret。创建秘密

$ printf "This is a secret" | docker secret create db_password -

如果它是一个文件,它可以像这样保存

$docker secret create site.key site.key

访问您撰写中的秘密,如下所示

version: '3.1'

services:
   db:
     image: mysql:latest
     volumes:
       - db_data:/var/lib/mysql
     environment:
       MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD_FILE: /run/secrets/db_password
     secrets:
       - db_root_password
       - db_password

秘密可在 /run/secrets 文件夹中找到。

如果您提交容器,则不包括秘密。

于 2019-10-18T04:02:14.593 回答