Dockerで複数 GitHub アカウントを簡単に運用 設定不要すぐ運用可能
概要
本記事では、Alpine Linux をベースにして最新バージョンの Git を含む軽量 Docker イメージを紹介します。
複数の GitHub アカウントを簡単に運用する方法の一例として、フォルダごとの .git/config
やカスタム .gitconfig
ファイルの活用法もあわせて解説します。
- GitHub リポジトリ: https://github.com/softjapan/git
- Docker Hub リポジトリ: https://hub.docker.com/r/softjpn/git
使い方
Docker Hub からプル
docker pull softjpn/git
ローカルディレクトリをマウントして Git を実行
ホスト側のカレントディレクトリを /app
にマウントし、以下のように Git コマンドを実行します。
# git status
docker run --rm -it -v "$PWD:/app" softjpn/git status
# git add
docker run --rm -it -v "$PWD:/app" softjpn/git add -A .
# git commit
docker run --rm -it -v "$PWD:/app" softjpn/git commit -m "Your commit message"
# git push
docker run --rm -it -v "$PWD:/app" softjpn/git push origin main
代表的な Git コマンド例
-
clone
docker run --rm -it -v "$PWD:/app" softjpn/git clone https://github.com/user/repo.git
-
branch, log, checkout
# ブランチ一覧 docker run --rm -it -v "$PWD:/app" softjpn/git branch # ログ確認 docker run --rm -it -v "$PWD:/app" softjpn/git log --oneline --graph # ブランチ切り替え docker run --rm -it -v "$PWD:/app" softjpn/git checkout main
-
ブランチを新規作成して移動
docker run --rm -it -v "$PWD:/app" softjpn/git checkout -b feature-branch
-
pull, merge, rebase
docker run --rm -it -v "$PWD:/app" softjpn/git pull docker run --rm -it -v "$PWD:/app" softjpn/git merge feature-branch docker run --rm -it -v "$PWD:/app" softjpn/git rebase feature-branch
-
stash
docker run --rm -it -v "$PWD:/app" softjpn/git stash docker run --rm -it -v "$PWD:/app" softjpn/git stash pop
-
tag
docker run --rm -it -v "$PWD:/app" softjpn/git tag v1.0.0 docker run --rm -it -v "$PWD:/app" softjpn/git push --tags
複数の GitHub アカウントを簡単に運用する方法
個人用と会社用など、複数の GitHub アカウントを使い分ける場合に便利な設定方法を紹介します。
.git/config
を活用
1. リポジトリごとの 各プロジェクトの .git/config
に直接ユーザ情報を記述します。
たとえば、プロジェクトA の .git/config
には以下のように設定。
[user]
name = "YourNameForProjectA"
email = "yourA@example.com"
プロジェクトB の .git/config
は別のユーザ情報にするなど、フォルダ・リポジトリごとにアカウントを切り替えられます。
2. カスタム .gitconfig ファイルをマウント
「A というリポジトリはユーザAの設定」「B というリポジトリはユーザBの設定」というように、
専用の .gitconfig
ファイルをプロジェクトごとに置いておく方法も有効です。
たとえば、
- プロジェクトA のルートディレクトリに
.gitconfig_A
を用意 - プロジェクトB のルートディレクトリに
.gitconfig_B
を用意
コンテナ実行時に、以下のように該当する設定ファイルを /root/.gitconfig
としてマウントします。
docker run --rm -it \
-v "$PWD:/app" \
-v "$PWD/.gitconfig_A:/root/.gitconfig" \
softjpn/git config --list
これで、そのコンテナからはユーザA として Git コマンドを実行できます。
別のプロジェクトでは .gitconfig_B
をマウントしてユーザB として操作する、というように切り替えられます。
ビルド手順(ローカルでDockerイメージを作る場合)
リポジトリのソースコードをダウンロードして、自分のマシンでビルドしたい場合は以下を実行します。
git clone https://github.com/softjapan/git.git
cd git
docker build -t softjpn/git .
まとめ
- 軽量・最新の Git イメージ: Alpine Linux ベースでイメージサイズを抑えつつ、最新の Git を使える。
-
複数アカウント運用: フォルダごとの
.git/config
、あるいはカスタム.gitconfig
を使うことで、複数の GitHub アカウント設定を簡単に切り替えられる。 - ローカルへのインストール不要: Docker コンテナ内で Git 操作を行うので、ホスト環境を汚さずに開発を続けられる。
この手法を使えば、チーム内で統一した環境構築を行ったり、個人で複数アカウントを無理なく管理したりと、さまざまなシーンに応用できます。ぜひ活用してみてください。
<div align="center">
<strong>このコンテナで、複数アカウントの Git 運用を簡単に始めてみましょう!</strong>
</div>
Discussion