やりたいこと
Dockerfile内でプライベートレポジトリをクローンしてごにょごにょしたい時に、credentialの渡し方に迷ったのでメモ。
具体的には以下のようなプライベトレポジトリのpythonパッケージを含んだrequirements.txt
をpip install -r requirements.txt
でインストールしたい。
requirements.txt
...
git+https://github.com/<private-org>/<private-repo>
...
やったこと
プライベートキーをCOPYして使う方法があるだったが、鍵を渡すのはなんだかなーという感じだったので、OAuthトークンを使う方法で実行。
OAuthトークンはHTTPSでクローンする時のパスワードとして使うことができる
.netrc
に認証情報を書き込んでおきrequiremqnts.txt
を変更せずレポジトリをクローンできるようにする。
ARG GITHUB_USER
ARG GITHUB_TOKEN
RUN touch /root/.netrc \
echo machine github.com >> /root/.netrc \
echo login $GITHUB_USER >> /root/.netrc \
echo passowrd $GITHUB_TOKEN >> /root/.netrc \
pip install -r requirements.txt \
rm /root/.netrc
ビルド実行
以下のようにImageをビルドする。ユーザー名とOAuthトークンをARG
として渡して認証する。
$ docker build --build-arg GITHUB_USER=<github-user-name> --build-arg GITHUB_TOKEN=<github-oauth-token> .
参考