The jonki

呼ばれて飛び出てじょじょじょじょーんき

Dockerでgithubのプライベートリポジトリをsshでcloneする

調べてみると色々方法があるようだったが,下記のリンクの方法が一番よかった.Dockerでcloneする用に鍵を作ってそれを利用する方法.英語読むのダリィという方のため(といいつつ自分の作業用メモ)この記事書いておきます.
tarunlalwani.com

Dockerでcloneする用のsshの鍵を作る

大体の人はデフォルトのパスにすでにid_rsaがあると思うので上書きしないよう注意.

$ mkdir keys
$ ssh-keygen -t rsa -b 4096 -C "xxxxxx@yyyyy.com"
Enter file in which to save the key (/home/jonki/.ssh/id_rsa): /home/jonki/keys/id_rsa
Enter passphrase (empty for no passphrase): 何も入力せずエンター
Enter same passphrase again: 何も入力せずエンター
Your identification has been saved in /home/jonki/keys/id_rsa. 

// known_hostsをid_rsa,id_rsa.pubがあるところに作っておく
$ ssh-keyscan github.com >> keys/known_hosts
公開鍵をgithubに登録

githubの設定から,[New SSH key]を押し,作成されたid_rsa.pubをコピーして貼り付ける.

cloneするDockerfileを準備

Imageは何でも良いのだが,入れるImageによってはgitのインストールコマンドも記述する必要がある.また作成した鍵を含むkeysディレクトリをDockerfileと同じディレクトリに置いておく.うまく行けば,「Successfully tagged ...」みたいなログが出るはず.

$ cd <your work space>
$ mv /home/jonki/keys .
$ vim Dockerfile
FROM python:3.6.3

# 作ったkeysディレクトリをコンテナ上にコピー
RUN mkdir -p /root/.ssh
COPY keys /root/.ssh

# 入れるImageによってはgitをインストールするコマンドを入れる必要がある
# RUN apt-get -y update && apt-get -y install --no-install-recommends git ssh みたいな

# git clone
WORKDIR /work
RUN git clone git@github.com:username/your-private-repo.git

CMD ["/bin/bash"]
実行して確かめる
$ docker build -t private-repo .
$ docker run -it private-repo
root@xxxxxxx:/work# ls
private-repo