環境構築手順をドキュメンテーションするのもメンテナンスするのも面倒なので、チーム開発をする際、最近はdevcontainerを使おうということにしています。 一方、環境変数の管理にはdirenvを使っているのですが、direnvはこうやってセットアップしてねという手順を書くのも同様なので、デフォルトでフック等も有効化しておきたい。
devcontainerの設定ファイル.devcontainer.json
にはpostCreateCommand
という設定があり、これはコンテナが作成された後に実行されるコマンドを指定できます。
これを使ってdirenvをデフォルトで有効化しておきます。
まずはDockerfile
でdirenvをインストールします。
FROM mcr.microsoft.com/vscode/devcontainers/base:bullseye RUN apt-get update \ && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install -y --no-install-recommends \ direnv \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \
その上で、.devcontainer.json
のpostCreateCommand
にdirenvの設定を追加します。設定というよりは、単にhookを効かせるだけといえばだけですが…。
(略) "postCreateCommand": "direnv hook bash >> ~/.bashrc && direnv allow"
postCreateCommand
はコンテナのビルドが完了したタイミングで実行されるフックポイント。ここでdirenvのhookについての設定などを.bashrc
に追加しています。強制的にdirenv allowを実行することに関しては、セキュリティリスクを招くといえば招くので、ご利用は計画的に。