用途
Doppler 是一个密钥(secrets)管理平台。本技能为使用 Doppler 提供全面辅助,涵盖 CLI 操作、项目与配置管理、密钥注入、集成同步以及安全最佳实践。
当用户提及以下关键词时触发:"doppler"、"secrets management"、"doppler cli"、"doppler secrets"、"doppler run"、"doppler setup"、"doppler configs"、"doppler projects"、"secret injection"、"doppler environments"、"service tokens"。
主要能力
安装 CLI
macOS:
brew install gnupg && brew install dopplerhq/cli/doppler
Linux(Debian/Ubuntu):
apt-get update && apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -sLf --retry 3 --tlsv1.2 --proto "=https" 'https://packages.doppler.com/public/cli/gpg.DE2A7741A397C129.key' | gpg --dearmor -o /usr/share/keyrings/doppler-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/doppler-archive-keyring.gpg] https://packages.doppler.com/public/cli/deb/debian any-version main" | tee /etc/apt/sources.list.d/doppler-cli.list
apt-get update && apt-get install doppler
Shell 脚本(任意操作系统):
curl -sLf --retry 3 --tlsv1.2 --proto "=https" https://get.doppler.com | sh
认证与设置
# 登录(打开浏览器进行认证)
doppler login
# 在当前目录设置项目(交互式)
doppler setup
# 非交互式设置
doppler setup --project my-app --config dev --no-interactive
常见任务
| 开发者想要… | 操作 |
|---|---|
| 列出所有密钥 | doppler secrets -p <project> -c <config> |
| 获取单个密钥 | doppler secrets get SECRET_NAME -p <project> -c <config> |
| 设置密钥 | doppler secrets set KEY=value -p <project> -c <config> |
| 设置多个密钥 | doppler secrets set KEY1=val1 KEY2=val2 |
| 删除密钥 | doppler secrets delete SECRET_NAME |
| 带密钥运行命令 | doppler run -- your-command --flags |
| 指定配置运行 | doppler run -p backend -c dev -- npm start |
| 下载密钥为文件 | doppler secrets download --format env --no-file |
| 列出项目 | doppler projects |
| 列出配置 | doppler configs -p <project> |
| 列出环境 | doppler environments -p <project> |
| 克隆配置 | doppler configs clone -p <project> -c <source> --name <new> |
| 查看活动日志 | doppler activity |
| 检查当前设置 | doppler configure debug |
| 打开仪表盘 | doppler open |
| 查看当前认证身份 | doppler me |
密钥注入模式
环境变量注入:
# 将密钥作为环境变量注入任意命令
doppler run -- node server.js
doppler run -- docker compose up
doppler run -- terraform apply
# 运行 shell 命令字符串
doppler run --command "echo $DATABASE_URL && npm start"
# 仅注入指定密钥
doppler run --only-secrets DATABASE_URL,API_KEY -- node server.js
挂载密钥为文件:
# 挂载为 JSON 文件(临时,进程退出后清理)
doppler run --mount secrets.json -- cat secrets.json
# 挂载为 .env 文件
doppler run --mount .env --mount-format env -- your-command
# 使用模板挂载
doppler run --mount config.yaml --mount-template template.yaml -- your-command
模板替换:
# 将密钥替换进模板文件
doppler secrets substitute template.env.tpl > .env
离线/容错回退:
# 使用回退文件运行(成功时写入加密密钥,失败时读取)
doppler run --fallback ./fallback.encrypted -- npm start
# 只读回退(从不更新回退文件)
doppler run --fallback ./fallback.encrypted --fallback-readonly -- npm start
# 离线模式(直接从回退文件读取,不联系 API)
doppler run --fallback-only --fallback ./fallback.encrypted -- npm start
项目与配置层级
Doppler 按层级组织密钥:
Workplace
└── Project(如 "backend"、"frontend")
└── Environment(如 "development"、"staging"、"production")
└── Config(如 "dev"、"stg"、"prd")
└── Branch Config(如 "dev_feature-x")
配置继承:
- 根配置(dev、stg、prd)继承自其环境
- 分支配置继承自其父配置
- 覆盖级联:Environment → Config → Branch Config
- 个人配置允许单个开发者覆盖而不影响团队
集成同步
Doppler 可自动将密钥同步到外部平台:
| 平台 | 使用场景 |
|---|---|
| AWS Secrets Manager / SSM | ECS、Lambda、EC2 部署 |
| GCP Secret Manager | GKE、Cloud Run、Cloud Functions |
| Azure Key Vault | AKS、App Service、Functions |
| Cloudflare Pages / Workers | 边缘与 Jamstack 部署 |
| Vercel | 前端/全栈部署 |
| Firebase Functions / Hosting | Functions 配置与构建时密钥 |
| Serverless Framework | Lambda/无服务器函数密钥 |
| GitHub Actions | CI/CD 密钥 |
| Docker / Docker Compose | 容器环境注入 |
| Kubernetes | 通过 Doppler Operator 生成 Secret 对象 |
| Terraform | 基础设施即代码 |
| Webapp.io | CI/CD Layerfile 密钥 |
| Heroku | PaaS 部署 |
服务令牌
对于 CI/CD 和生产环境,使用服务令牌(只读,限定到单个配置):
# 通过仪表盘或 API 生成服务令牌
# 在 CI/CD 中使用:
DOPPLER_TOKEN=dp.st.xxx doppler run -- your-command
# 或设置为环境变量
export DOPPLER_TOKEN=dp.st.xxx
doppler secrets
安全最佳实践
- 切勿将密钥提交到版本控制——使用 Doppler 作为唯一可信来源
- 在生产环境使用服务令牌(只读、限定配置)
- 本地开发覆盖使用个人配置
- 为生产配置启用变更请求(变更前需审批)
- 定期轮换密钥——使用 Doppler 的轮换提醒
- 尽可能使用 OIDC 认证以获取短期令牌
- 通过
doppler activity和仪表盘审计日志审计访问 - 使用分支配置隔离功能分支密钥
- 生产环境切勿使用
--no-verify-tls
参考文档
| 参考 | 内容 |
|---|---|
| CLI.md | 完整 CLI 命令参考,包含所有子命令与标志 |
| INTEGRATIONS.md | CI/CD、Docker、Kubernetes、云平台集成模式 |
故障排查
认证问题:
- 运行
doppler me检查当前认证状态 - 运行
doppler configure debug查看活动配置 - 使用
doppler login重新认证 - 检查作用域:
doppler configure get token --scope /path/to/project
加载了错误的密钥:
- 检查当前活动的项目/配置:
doppler configure debug - 验证作用域:在项目目录中运行
doppler setup - 使用显式标志:
doppler secrets -p project -c config - 检查环境变量覆盖:
doppler run --preserve-env=false
回退文件问题:
- 确保回退路径可写
- 检查口令是否已更改(默认依赖配置)
- 使用
doppler run clean移除旧回退文件 - 用
doppler run --fallback ./path -- echo ok重新生成
服务令牌不工作:
- 验证令牌对应正确的项目与配置
- 服务令牌为只读——无法设置/删除密钥
- 检查令牌是否已在仪表盘中撤销
- 确保
DOPPLER_TOKEN环境变量设置正确
工作流程
协助使用 Doppler 时:
- 识别任务:设置、密钥管理、注入、集成或调试
- 检查前置条件:doppler CLI 是否已安装?用户是否已认证?
- 确定作用域:正在使用哪个项目与配置?
- 查阅参考:使用参考文档获取详细 CLI 标志与集成模式
- 安全优先:切勿在日志中输出密钥值;列出时使用
--only-names