2017-07-18 21 views
3

当前我正在使用docker-compose文件来设置我的dev/prod环境。我使用环境变量来存储秘密,数据库凭证等。经过一番搜索,我发现可以使用保险柜来保护凭证。我尝试了几个有关Vault的基本示例,但仍然不知道如何将Vault与docker-compose文件一起使用。有人能指点我一个正确的方法吗?如果Vault不是docker-compose的好解决方案,我可以使用什么机制来保护证书,而不是将它们作为纯文本存储在环境中。将保管库与Docker撰写文件结合使用

+0

根据官方建议,Docker并不是用于在生产环境中部署Vault的最佳解决方案:https://www.vaultproject.io/guides/production.html –

+0

说明:您是否在* docker-compose中设置保险库* - 或者您是否想要在Docker中设置一项服务 - 撰写*使用*保管库? – zaTricky

回答

2

这是我当前在dev中使用Vault的docker-compose配置,但我在生产中使用专用服务器(不是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 

体积坐骑确保金库配置被保存,如果你必须重建容器。

使用“文件”的后端,使为泊坞窗/ Git的这种设置可移植的,你还需要创建一个名为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" 
} 

注意:
尽管ROOT_TOKEN在此配置中是静态的(不会在容器构建之间更改),但为app_role发出的任何生成的VAULT_TOKEN将在每次必须解除保管库时被禁用。

我发现Vault有时会在容器重新启动时变为密封。

+0

顺便提一下,这种设置允许我将dev-vault状态存储到版本控制库(如Git),因此dev-vault实例可以轻松构建在其他开发人员的盒子上,而无需发出所有vault-config设置命令或将它们构建为脚本。 – StampyCode