2017-07-18 105 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