関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
dotenvの作者が作った次の dotenv という意味で dotenvx というのがリリースされていたのですね。
「どこでも動く」、「対応言語がすごく多い」、「.envファイルを暗号化できる」という点が良いですね。
ちょっと試してみたのでメモ。
試してみた
WSL上で利用しました。
インストールは、brewで一発でした。
$ brew install dotenvx/brew/dotenvx
予め以下のソースコードを用意
$ mkdir app; cd $_ $ go mod init app $ cat main.go package main import ( "fmt" "os" ) func main() { fmt.Println(os.Getenv("hello")) } $ go run . $
.env
ファイルを用意
$ echo "hello=world" > .env $ cat .env hello=world
dotenvx を使って暗号化してみます。
$ dotenvx encrypt ✔ encrypted (.env) ✔ key added to .env.keys (DOTENV_PRIVATE_KEY) ℹ add .env.keys to .gitignore: [echo ".env.keys" >> .gitignore] ℹ run [DOTENV_PRIVATE_KEY='xxxxxxxxxxxxxxxxxxxxxxx' dotenvx run -- yourcommand] to test decryption locally
.env
が暗号化され、.env.keys
というファイルが追加されます。
.env.keys
ファイルに秘密鍵が書かれているので、このファイルをコミットしてはいけません。(上の出力にも .gitignore に追加しろって出てますね)
暗号化された .env
は以下のようになりました。
#/-------------------[DOTENV_PUBLIC_KEY]--------------------/ #/ public-key encryption for .env files / #/ [how it works](https://dotenvx.com/encryption) / #/----------------------------------------------------------/ DOTENV_PUBLIC_KEY="025b7c933746af69b8c14a249b0ceb4f379b83f0639523ea682dc7b61ca038ea61" # .env hello="encrypted:BM97GGw4a4EOxCUT8K0syQHQ+tcyMavpjpRq30mqpUOUtwT0uHEaU4zzt5gD+5OzwSqpTW887lbIc0m3FxdU6ydrxRhuRS1ETUmYoK4EMfW4Rc0v1XohxLUJ0Yp8AmhnNZUbCmUV"
てことで、暗号化された .env
を使ってプログラムを起動します。
$ dotenvx run -- go run . [dotenvx@1.5.0] injecting env (2) from .env world
おー、ちゃんと復号化された上でアプリケーションからは取得できていますね。
[dotenvx@1.5.0] injecting env (2) from .env
の出力がいらない場合は、-q
オプションを付与します。
$ dotenvx -q run -- go run . world
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。