将保pipe库与docker-compose文件一起使用

目前我正在使用docker-compose文件来设置我的开发/生产环境。 我正在使用环境variables来存储秘密,数据库凭据等。经过一番search,我发现保险柜可以用来保护凭据。 我尝试了几个与Vault的基本示例,但我仍然不知道如何将Vault与docker-compose文件结合使用。 有人能指点我一个正确的方法吗? 如果Vault不是docker-compose的一个很好的解决scheme,我可以使用什么机制来保护凭据,而不是将它们作为纯文本存储在环境中。

这是我当前在dev中使用Vault的docker-composeconfiguration,但是我在生产中使用了专用服务器(不是Docker)。

# docker_compose.yml version: '2' services: myvault: image: vault container_name: myvault ports: - "127.0.0.1:8200:8200" volumes: - ./file:/vault/file:rw - ./config:/vault/config:rw cap_add: - IPC_LOCK entrypoint: vault server -config=/vault/config/vault.json 

如果必须重新构build容器,则卷装载可确保保存库configuration已保存。

要使用'文件'后端,为了使这个设置对于Docker / Git可移植,您还需要创build一个名为config的目录,并将其放入名为vault.json文件中:

 # config/vault.json { "backend": {"file": {"path": "/vault/file"}}, "listener": {"tcp": {"address": "0.0.0.0:8200", "tls_disable": 1}}, "default_lease_ttl": "168h", "max_lease_ttl": "0h" } 

笔记:
尽pipe在这个configuration中ROOT_TOKEN是静态的(在容器构build之间不会改变),但是VAULT_TOKEN为了VAULT_TOKEN发出的任何生成的app_role将在每次必须app_role时被失效。

我发现当容器重新启动时,Vault有时会被密封。