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

  • 32
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Github上にプロジェクトを分散管理している場合、デプロイの際の選択肢の一つにDockerが挙げられるようになってきました。
この記事では、簡単にDockerfileをbuildしただけで、コンテナ上でプライベートリポジトがクローンできる方法を共有します。
結論からいくと、GithubのOAuthトークンを利用すると最高に楽でした。
簡単というのは、一般的な秘密鍵とsshを活用した方法と比較して簡単という意味です。
ちなみに、簡単どころか今のところはssh経由での方法による解法がつきとめられませんでした(ベースイメージはalpine:3.3)。

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

OAuthトークンの作成

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

  1. Setteings(右上ドロップダウン) -> 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に付け足していきましょう。

以上です。