Github上にプロジェクトを分散管理している場合、デプロイの際の選択肢の一つにDockerが挙げられるようになってきました。
この記事では、簡単にDockerfileをbuildしただけで、コンテナ上でプライベートリポジトがクローンできる方法を共有します。
結論からいくと、GithubのOAuthトークンを利用すると最高に楽でした。
簡単というのは、一般的な秘密鍵とsshを活用した方法と比較して簡単という意味です。
ちなみに、簡単どころか今のところはssh経由での方法による解法がつきとめられませんでした(ベースイメージはalpine:3.3)。
こちらの記事がとても最高に参考になったのですが、多少Github上での作業が変わった(?)ようなので、補足しながら説明します。
OAuthトークンの作成
Githubにログインした上で、次の箇所まで進んでください。
-
Setteings(右上ドロップダウン) -> Developer settings(左) -> Personal access tokens(左) -> Generate new token(右上の方)
-
Generate new tokens のボタンをクリック
-
Token description に何か一言
-
Select scopesパネルのrepoの項にチェックを入れる(下図)
上図にあるように、ランダムな文字列が得られたと思います。
このトークンは一回だけしか表示されないので気をつけてください。
紛失しても、何回でも作り直せるので、同じ手順を踏んでください。
コピーをしたら、次にいきましょう。
Githubのプライベートリポジトリからclone
先ほどのランダム文字列がxyz、github上のユーザ名がhoge、リポジトリの名前がfooの場合次のようになります。
git clone https://xyz:x-oauth-basic@github.com/hoge/foo.git
この状態で端末でcloneができることを確認したら、次は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に付け足していきましょう。
以上です。