Dockerfileのbuildで簡単にGithubのプライベートリポジトリをクローンする方法

Github上にプロジェクトを分散管理している場合、デプロイの際の選択肢の一つにDockerが挙げられるようになってきました。

この記事では、簡単にDockerfileをbuildしただけで、コンテナ上でプライベートリポジトがクローンできる方法を共有します。

結論からいくと、GithubのOAuthトークンを利用すると最高に楽でした。

簡単というのは、一般的な秘密鍵とsshを活用した方法と比較して簡単という意味です。

ちなみに、簡単どころか今のところはssh経由での方法による解法がつきとめられませんでした(ベースイメージはalpine:3.3)。

こちらの記事がとても最高に参考になったのですが、多少Github上での作業が変わった(?)ようなので、補足しながら説明します。


OAuthトークンの作成

Githubにログインした上で、次の箇所まで進んでください。


  1. Setteings(右上ドロップダウン) -> Developer settings(左) -> Personal access tokens(左) -> Generate new token(右上の方)


  2. Generate new tokens のボタンをクリック


  3. Token description に何か一言


  4. Select scopesパネルのrepoの項にチェックを入れる(下図)


tmp.png

5. 下部のGenerate tokenをクリック

tmp2.png

上図にあるように、ランダムな文字列が得られたと思います。

このトークンは一回だけしか表示されないので気をつけてください。

紛失しても、何回でも作り直せるので、同じ手順を踏んでください。

コピーをしたら、次にいきましょう。


Githubのプライベートリポジトリからclone

先ほどのランダム文字列がxyz、github上のユーザ名がhoge、リポジトリの名前がfooの場合次のようになります。

git clone https://xyz:x-oauth-basic@github.com/hoge/foo.git

この状態で端末でcloneができることを確認したら、次はDockerfileの編集に移ります。


Dockerfile

FROM alpine:3.3

RUN apk update && apk add git
RUN git clone https://xyz:x-oauth-basic@github.com/hoge/foo.git

Docker Imageの作成

docker build -t github-repo:1.0 .

これで、リポジトリのcloneがDocker上で出来たと思います。

ここまでの作業をベースにして、アプリのビルドなどをDockerfileに付け足していきましょう。

以上です。