好用的雲環境變量管理工具 Doppler

Ku's Blog
12 min readJan 27, 2023

--

Doppler Home Page

· 前言
· 介紹
Doppler Secret Manager 是什麼 ?
目前支援哪些 PaaS平台?
為何是選擇使用 Doppler ?
Doppler Secret Manager 的連結
· 創建帳號教學
創建 doppler 帳號
建立你的Workplace
建立完成
· 下載 Doppler CLI
安裝 doppler cli
Mac 安裝
· 建立 Doppler project
Doppler CLI 登入 Doppler 帳號
· Doppler 添加環境變量方法
方法一:使用儀表板操作
方法二:使用 Doppler CLI 將本地環境變量上傳
· 連接 PaaS 平台範例
· 補充
· 總結
· 參考資料

前言

前陣子因為 heroku 取消免費方案,所以改用 fly.io 作為我們專題的替代免費後端服務器,剛好 fly.io 有提到可以用 doppler 來管理環境變量。

讓我第一次了解到有可以管理環境變量的服務可以用,也就是這次要介紹的 Doppler Secret Manager 。

介紹

Doppler Secret Manager 是什麼 ?

Doppler Secret Manager 是一個管理和存儲機密的工具。它可以幫助團隊存儲和管理各種機密,如API密鑰、密碼和敏感信息。它具有安全性和合規性功能,並且可以與其他工具和服務集成。
by ChatGPT

主要是幫助團隊管理環境變量等不能讓使用者看到的訊息,當然如果只是紀錄環境變量,我也可以使用其他筆記工具就好了,但 Doppler 還可以分享你的環境變量給與你的其他團隊成員,讓他們可以共同編輯,並且透過 token 來連結現有的 平台即服務 (PaaS 平台),讓我們不需要在手動去設定環境變量等參數。

目前支援哪些 PaaS平台?

doppler 支援平台截圖

有 AWS , Azure , Fly.io , Vercel , Heroky , GitHub 等…
其實更新還蠻快的,可能之後會有越來越多平台可以使用。

為何是選擇使用 Doppler ?

  • 他的文件寫得非常好讀,就算文字看不懂他還會錄製影片示範
  • 環境變量的連結方式很簡單,只需要取得你所使用的平台的訪問 Token 並添加到 Doppler 裡面,就可以連接上。
  • 可以 import JSON, ENV, YAML 格式的文件,直接上傳環境變量文件,不用自己一個一個打,之前用 Heroku 就感覺還蠻方便的了,沒想到還可以更方便😍
  • 禁止github等平台共享 secrets ,避免其他共享平台把 secrets 共享出去
  • 為 secrets 創造集中管理的地方,一個地方管理 secrets ,之後不管你是要在哪裡用,都可以到 Doppler 抓 secrets 來用。
  • 可以讓團隊共用一個環境變量設定,避免每個人都不一樣,或是每次 clone 專案時都要重寫一次環境變量的設定。
Doppler 文件頁面

Doppler Secret Manager 的連結

可能還不是很有名,用 google 搜尋 doppler 會出現其他東西。

Doppler Secret Manager

Doppler Docs

創建帳號教學

創建 doppler 帳號

首先我們需要創建 Doppler 帳號
你可以使用你的 Github , Google 帳號來建立

建立你的Workplace

建立 workplace ,主要用來區分各個專案的儀表板

建立完成

這樣就有我們的專屬儀表板來管理各個專案的環境變量了

下載 Doppler CLI

doppler cli 可以幫助我們更快速更方便的操作 doppler secret manager

安裝 doppler cli

可以參考官網介紹還蠻詳細的,還有影片教學。

官網介紹連結位置

Mac 安裝

mac 安裝指令

# 安裝 doppler cli 之前需要這個加密功能
brew install gnupg
# 安裝 dopppler cli
brew install dopplerhq/cli/doppler
doppler cli 安裝結果圖

安裝完成後我們就可以查看是否安裝成功,
我們可以透過下面指令查看是否成功。

doppler --version
doppler version cmd 執行結果圖

可以看到我們安裝成功了。

建立 Doppler project

進入我們的儀表板後,我們需要建立一個與我們的應用連結的 project

點擊 Create Project

輸入 Project name
然後輸入你專案的說明

Doppler CLI 登入 Doppler 帳號

接下來我們要登入 Doppler 帳號到 Doppler CLI 裡面

在終端機裡面輸入

doppler login

他會要我們開啟瀏覽器

輸入 Y

登入畫面

會出現要我們輸入 auth code 的畫面

這個 auth code 會顯示在我們輸入 doppler login 的終端機裡面

☝🏿 請注意這個 auth code 請不要與他人共享

終端機截圖

我們將這串內容複製並貼上到網頁就可以了

貼到網頁上後就能夠登入 Doppler 帳號了
然後選擇我們的workplace

接下來他會出現要你輸入 Token 名稱,你可以直接使用他幫你預設的
或是設定任意的文字。

接下來會出現這個畫面,
然後我們需要透過終端進入到我們的專案文件夾底下

cd name_of_application/

再來設置 doppler

doppler setup

如果已經有雲端的 doppler project 也是可以選擇的

選擇我們要使用的project
使用生產環境用的 prd

這樣我們就連結成功了

Doppler 添加環境變量方法

方法一:使用儀表板操作

有三個可以選擇,development , staging, production 選擇 prd

這邊可以使用兩種方式
一個一個加或是直接 import

一條一條加的話就跟heroku一樣
之後要記得按右上的Save 就可以了

使用 import 的話 你就可以使用 env , json , yaml 格式

這邊我用 env 示範

點選 import secrets 後就會顯示在儀表板上,非常方便

接下來,他會問你是否要同步更新到其他環境所使用的環境變量裡面
我們就直接點 Save 跳過就可以了

這樣我們將我們的環境變量保存到 doppler 裡面了

方法二:使用 Doppler CLI 將本地環境變量上傳

  1. 在 Doppler CLI 登入 doppler 帳號
  2. 使用下面指令上傳環境變量檔案
# ENV and JSON formats supported
doppler secrets upload sample.env
doppler secrets upload secrets.json

甚至還可以將上傳後的檔案下載下來

# Avoid storing secrets unencrypted whenever possible
doppler secrets download --no-file --format env > .env

連接 PaaS 平台範例

原先 Doppler 要與 fly.io 連結需要自己設定 dockerfile
但我之前試了很久都沒有成功,或許是因為我不熟 docker 的原因
不過後來我詢問 doppler 的開發者沒過多久,他們後來有出可以使用 UI 操作來連接。

變得非常便利,不然 fly.io 每次設定一個環境變量就要重新部屬一次,等於有十個環境變量就要重複部屬十次,非常不好用。

還好現在可以透過 doppler 來連結環境變量,直接設定好所有的環境變量一次更新,只要部屬一次就好。

詳細可以直接參考官網介紹,寫得非常清楚

補充

另外還有提供 SDK 使用,如果你是使用 Node.js
可以直接在本地連上 Doppler 上放置的環境變量

// doppler-secrets.js

const https = require('https')

module.exports.getSecrets = async () => {
return new Promise(function(resolve, reject) {
https.get(`@api.doppler.com/v3/configs/config/secrets/download?format=json`">https://${process.env.DOPPLER_TOKEN}@api.doppler.com/v3/configs/config/secrets/download?format=json`, (res) => {
let secrets = ''
res.on('data', (data) => secrets += data);
res.on('end', () => resolve(JSON.parse(secrets)))
}).on('error', (e) => reject(e))
})
}
// app.js

const doppler = require('./doppler-secrets');
(async() => {
const secrets = await doppler.getSecrets()
})()

官網文件連結

總結

使用 Doppler 之後,在與專案成員共享環境變量時,就不用困擾要放在哪裡保管,還可以共同編輯,甚至對方都可以不知道內容有什麼,就可以繼續開發程式,是一個很方便的工具,大家可以自己玩玩看。

參考資料

--

--

Ku's Blog

人生沒有確切的目的,而我們只是在人生的過程中尋找存在的意義。