1Password Environments機能はパブリックベータリリースです、ご注意ください。
1passwordで.envを管理できるみたいなので試してみました。
この機能を知るまでは1passwordに登録した環境変数をop://形式で取得するようにしていました。
...省略...
DJANGO_SECRET_KEY="op://hogefugapiyo/hogefugapiyo/DJANGO_SECRET_KEY"
...省略...
ただ、環境変数を取得するためだけに毎回op run ...でコマンドを実行したり、op run ...を省略するためにエイリアスを設定したりで手間に感じていました。
これを解決してくれそうに思えたので1Password Environmentsを試してみました。
1Password Environmentとは
プロジェクトのシークレット(通常は環境変数として扱う認証情報)を保存・整理・管理するための安全なワークスペースを提供するものです。
- 指定したパスに
.envファイルを仮想マウントする - シークレットはディスクに書き込まれない
- Gitの履歴にも表示されないので、誤ってコミットすることもない
- オフライン時でもキャッシュされたシークレットにアクセス可能
- 既存のdotenvライブラリと互換性あり
-
docker composeも対応してる、嬉しい
-
Environment作成
- 1passwordのデスクトップアプリで [ 開発者 ] > [環境を表示]をクリック
- [+ 新しい環境] ボタンをクリック
- [名前] を入力して [保存] ボタンをクリック
.env移行
[.envファイルをインポート] または [+ 新しい変数] で.envの内容を移行します。
.envのフォーマットについて
・値にスペースが含まれる場合は、値を引用符で囲む(例: "bar baz")
・値に特殊文字が含まれる場合は、\ でエスケープする(例: \$100)
ローカルに.envをマウント
ローカルに.envファイルができました。
% ls -la
prw-------@ 1 user staff 0 Mar 4 14:16 .env
...省略...
cat .envコマンドで変数の内容も確認できました。
% cat .env
# このファイルは1Passwordによって生成されました。手動による編集は失われます。
# 詳細については、こちらをご覧ください:https://developer.1password.com/docs/environments/local-env-file
DJANGO_ALLOWED_HOSTS=["localhost", "host.docker.internal"]
DJANGO_INTERNAL_IPS=["*"]
DJANGO_DEBUG=True
...省略...
.envでマウントして、docker composeでenv_file: .envを指定して起動したコンテナにも正常に環境変数が展開されることを確認しました。
これは便利。1password最高。




