0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dotenvxの基本操作

Last updated at Posted at 2025-06-16

経緯・なぜやるのか

サービス拡大に伴い環境変数の個数がかなり多くなり、Parameter StoreをIaC管理するのが辛い(現状のやり方で暗号化できるファイルサイズに限界があった)
溢れた分は手運用。。。きつい
たまにしか弄らないから基本コマンド忘れるのでメモ

doetnv x 暗号化 = dotenvx
で全部解決できそうだった

メリット・デメリット

復号用のプライベートキー(以下PK)だけクラウド側や環境変数として管理すれば良くなる(もちろん流出しないようにし、他の環境変数はPKから復号して設定するようになる)
他の環境変数は暗号化された状態のファイルとしてソースコード側に置いておける

ただし、環境変数の確認に常にPKが必要になり、確認や設定はdotenvよりは手間がかかる

インストールなど

dotenvx公式

名前よくないよね。dotenvばっかりでる

$  curl -sfS https://dotenvx.sh|sh 
$ dotenvx --version
1.44.2

基本的な使いかた

環境変数ファイルを暗号化

$ cat .env
DATABASE_USERNAME=hogehoge
DATABASE_PASSWORD=fugafuga
DATABASE_NAME=piyopiyo
...
$ dotenvx encrypt -f .env
✔ encrypted (.env)
✔ key added to .env.keys (DOTENV_PRIVATE_KEY)
ℹ add .env.keys to .gitignore: [echo ".env.keys" >> .gitignore]
ℹ run [DOTENV_PRIVATE_KEY='XXXXXXXX' dotenvx run -- yourcommand] to test decryption locally
$ ls -a
.env.keys # 復号キー
.env # 暗号化された環境変数
...
$ cat .env
#/-------------------[DOTENV_PUBLIC_KEY]--------------------/
#/            public-key encryption for .env files          /
#/       [how it works](https://dotenvx.com/encryption)     /
#/----------------------------------------------------------/
DOTENV_PUBLIC_KEY="XXXXXXXX"

# .env
#local
DATABASE_USERNAME="encrypted:BI8BXXXXXXXXXXXXXXXXXXXXqIw="
DATABASE_PASSWORD="encrypted:BFiRtXXXXXXXXXXXXXXXXXZ0tw=="
DATABASE_NAME="encrypted:BOwKXXXXXXXXXXXXXXXXXXXXXXXXXX=="
...
..

絶対に.env.keys(復号キー)はGitHubに上げたり誰でもアクセスできる場所にUPしないこと

環境変数の確認

$ dotenvx get -f .env|jq #jq便利なので入れたほうがいい
{
    DATABASE_USERNAME="hogehoge",
    DATABASE_PASSWORD="fugafuga",
    DATABASE_NAME="piyopiyo",
    ...
}

環境変数の追加・編集・削除

追加

$  dotenvx set HELLO production -f .env           
✔ set HELLO with encryption (.env)
$ dotenvx get -f .env|jq
{
    DATABASE_USERNAME: "hogehoge",
    DATABASE_PASSWORD: "fugafuga",
    DATABASE_NAME: "piyopiyo",
    ...
    HELLO: "production" # 追加された環境変数
}

編集

$ dotenvx set HELLO staging -f .env  
✔ set HELLO with encryption (.env)
$ dotenvx get -f .env|jq             
{
    DATABASE_USERNAME: "hogehoge",
    DATABASE_PASSWORD: "fugafuga",
    DATABASE_NAME: "piyopiyo",
    ...
    HELLO: "staging" # 編集された環境変数
}

削除

unset 的なサブコマンドはまだ無いため
decrypt → 行を消す → encrypt の3ステップ

$ dotenvx decrypt -f .env                      
✔ decrypted (.env)

好きなエディタで行を消してから下記実行

$ dotenvx encrypt -f .env

プログラム側での利用方法

コンテナなら下記のようにしてください
Node.jsを想定
他の言語を使用している場合はLLMに聞けば良いし、既存のDockerfileの編集でいけると思います

$ cat Dockerfile

...
COPY .env.production . # 環境変数ファイルコピー
RUN curl -sfS https://dotenvx.sh/install.sh | sh
CMD ["dotenvx","run","--env-file=.env.production","--","node","server.js"]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?