docker run -d --name vault --cap-add=IPC_LOCK \-e 'VAULT_LOCAL_CONFIG={"storage": {"file": {"path": "/vault/file"}}, "listener": [{"tcp": { "address": "0.0.0.0:8200", "tls_disable": true}}], "default_lease_ttl": "168h", "max_lease_ttl": "720h", "ui": true}' \-p 8200:8200 hashicorp/vault server
--cap-add=IPC_LOCK:这是 Vault 锁定内存所必需的,这会阻止内存被交换到磁盘。强烈推荐这个。在非开发环境中,如果不想使用该功能,则必须添加"disable_mlock: true"配置信息。
file存储后端位于路径/vault/file,默认秘密租约期限为一周,最长为 30 天。file不建议在生产使用中禁用 TLS 和使用存储后端。






private VaultEndpoint vaultEndpoint ;private VaultTemplate vaultTemplate ;public void init() {vaultEndpoint = new VaultEndpoint() ;vaultEndpoint.setHost("localhost") ;vaultEndpoint.setPort(8200) ;vaultEndpoint.setScheme("http") ;vaultTemplate = new VaultTemplate(vaultEndpoint, new TokenAuthentication("hvs.xxxxxxxxxxooooooooo"));}
@Testpublic void testEncrypt() {String ret = vaultTemplate.opsForTransit().encrypt("db.password", "123123") ;System.out.println(ret) ;}// 输出vault:v1:1WxwJjUJnN78FnqsTzxo+9wnGyHln3yCdG+lf5ZC/SDmeQ==
@Testpublic void testDecrypt() {String ret = vaultTemplate.opsForTransit().decrypt("db.password", "vault:v1:wBLlqFGICCnONZgwm+9JRRiOF/0xoxuO+OIy4omZoS1FBg==") ;System.out.println(ret) ;}// 输出123123
public void testCreate() {Secrets ss = new Secrets();ss.username = "admin";ss.password = "123123";Map<String, Object> data = new HashMap<>() ;data.put("data", ss) ;vaultTemplate.write("/mydata/data/db", data) ;}

@Testpublic void testRead() {System.out.println( vaultTemplate.read("/mydata/data/db").getData()) ;}
vault.uri=http://localhost:8200vault.token=hvs.xxxxxxxxoooooooo
public class AppVaultConfig {}
@Import(EnvironmentVaultConfiguration.class) 该配置会自动在容器中配置VaultTemplate类型的Bean,并且读取的配置信息就是上面vault.properties中的。

spring:datasource:driverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/batch?serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&useSSL=falseusername: ${db.username}password: ${db.password}type: com.zaxxer.hikari.HikariDataSourcehikari:minimumIdle: 10: 13




