GPG の鍵を Dev Container 内で使用する#
Git の gpg 鍵を使用する場合、 Sharing GPG Keys に従って設定が必要になる。
WSL 上の Docker コンテナの場合#
Windows 上への Gpg4win のインストール
Gpg4win のホームページ からインストーラをダウンロードして、インストーラに沿ってインストールする。
WSL 側の必要なソフトウェアのインストール
ファイル共有元となる WSL のコンソールで、次のコマンドにより socat と gpg をインストールする。
$ sudo apt update $ sudo apt install socat gpg
Note
最新のドキュメントでは socat のインストールが不要となっている。
WSL 内の設定
ファイル共有元となる WSL のコンソールで、次のコマンドを実行する。
$ echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf $ gpg-connect-agent reloadagent /bye
Dev Container のコンテナ内の設定
使用する Dev Container の Dockerfile などで次のようなコマンドで gnupg2 をインストールする。
$ apt-get update && apt-get install gnupg2 -y
Important
参照したドキュメントによると、gpg でなく gnupg2 であることに意味があるようだ。
SSH 接続先の Linux 上の Docker コンテナの場合#
Linux ホスト上に必要なソフトウェアのインストール
ファイル共有元となる WSL のコンソールで、次のコマンドにより gnupg2 をインストールする。
$ sudo apt update $ sudo apt install gnupg2
Dev Container のコンテナ内の設定
使用する Dev Container の Dockerfile などで次のようなコマンドで gnupg2 をインストールする。
$ apt-get update && apt-get install gnupg2 -y
Important
参照したドキュメントによると、gpg でなく gnupg2 であることに意味があるようだ。
gpg のエラー#
次のようなエラーが出てコミットができないことがあった。
error: gpg failed to sign the data
fatal: failed to write commit object
WSL のコンソールを開いて以下のコマンドを実行すると何故か治った。
$ gpg-connect-agent killagent /bye
$ gpg-connect-agent /bye