5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitHubのプライベートリポジトリからDockerイメージにcloneする

5
Last updated at Posted at 2018-07-11

GitHubのプライベートリポジトリからDockerイメージにcloneするのに苦労したのでメモしておきます。

主な手順は次の通りです。

  1. 鍵ペアを作る
  2. 公開鍵をGitHubリポジトリのdeploy keyとして登録する
  3. Dockerfileに、秘密鍵と公開鍵をイメージに取り込む記述を書く
  4. Dockerfileでgit cloneする記述を書く
  5. Dockerイメージをビルドする

鍵ペアを作る

GitHubのデプロイキーの仕組みを使ってcloneします。
デプロイキーにする鍵ペアを作ります。

まず、鍵のファイルを置くディレクトリを作ります。

$ mkdir ssh

鍵ペアを生成します。

$ ssh-keygen -t rsa -C foo@example.com
Generating public/private rsa key pair.
Enter file in which to save the key (/home/suzuki/.ssh/id_rsa): ssh/id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ssh/id_rsa.
Your public key has been saved in ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ivme5hlvowbsy+j9htos2E2nQVSzC5gww53weMd98nA foo@example.com
The key's randomart image is:
+---[RSA 2048]----+
|o.o + o S        |
|. . o + .        |
| . + o           |
|=ooB= + .. E     |
| =.O.B.o oo.     |
|.   .   o.       |
| o   + o .       |
|oo*.o* .         |
|  + B*=   +.     |
+----[SHA256]-----+

ディレクトリsshの下に、rsa_id(秘密鍵)とrsa_id.pub(公開鍵)の2つのファイルが作られます。

デプロイキーとして登録する

上記で作られた公開鍵を、GitHubのリポジトリにデプロイキーとして登録します。

Dockerfileに書く

DockerファイルのADDを使って、デプロイキーにした鍵ペアを、Dockerイメージに取り込みます。

# 鍵ペアを取り込む
RUN mkdir /root/.ssh
ADD ssh/id_rsa /root/.ssh
ADD ssh/id_rsa.pub /root/.ssh

# GitHubのサイトを登録しておく
RUN ssh -o StrictHostKeyChecking=no github.com; exit 0

# プライベートリポジトリからクローン
RUN git clone git@github.com:foo/quux.git /opt/quux

Dockerイメージを作る

$ docker build .
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?