参照サイトのとおりにやればできるんだけど、仕組みの部分を補遺する形のメモ
やり方
1. GitHubでaccess_tokenを用意する
これはgithubのページから設定とかで取り出してください。
Creating a personal access token for the command line - User Documentation
2. 認証情報を環境変数から読み込むファイルを用意する
git-credential-github-token
というファイル名で、以下のファイルを作る。
#!/bin/sh echo protocol=https echo host=github.com echo username=$GITHUB_USERNAME echo password=$GITHUB_TOKEN
これは認証情報の事前埋め込み用の記述で詳しくは「7.14 Git のさまざまなツール - 認証情報の保存」 を参考にしてほしい。
なお、ファイル名は以下のルールで命名規則がなされている。
これはつまり、先ほど説明した一連のヘルパーには、git-credential-cache や git-credential-store といった名前がつくということです。コマンドライン引数を受け付けるよう設定することもできます。 設定方法は “git-credential-foo [args]
.” になります。 なお、標準入出力のプロトコルは git-credential と同じですが、指定できるアクションが少し違ってきます。 - 7.14 Git のさまざまなツール - 認証情報の保存
3. Dockerファイルに以下の形で書き込む
使いたいprivateリポジトリがある対象が https://github.com/hogehoge/
の場合以下の通り
FROM ruby WORKDIR /app COPY ./git-credential-github-token /usr/local/bin RUN git config --global url."https://github.com/hogehoge/".insteadOf ssh://git@github.com/hogehoge/ \ && git config --global credential.helper github-token
4. Dockerを実行する環境に1で取得した情報をセットする
環境変数に情報をセットする
export GITHUB_USERNAME={{githubのユーザ名}} export GITHUB_TOKEN={{生成したトークン}}
5.認証情報を環境変数に仕込んで実行する
$ docker build . $ docker run -it -e GITHUB_USERNAME=YOUR_USER_NAME -e GITHUB_TOKEN=YOUR_GITHUB_TOKEN -v .:/app IMAGE bash
docker-composeでやりたい場合は以下
docker-compose build --build-arg GITHUB_USERNAME=$GITHUB_USERNAME --build-arg GITHUB_TOKEN=$GITHUB_TOKEN
しくみ
githubの認証情報を GITHUB_USERNAME
と GITHUB_TOKEN
の環境変数から読み込むようにし、実行時またはbuild時に環境変数に仕込ませることで利用者が設定した任意のtokenを利用することができる。