Closed14

GitHub SSH接続 + docker build 時にPrivateリポジトリからリソースをPull

PINTOPINTO

ssh-keygen コマンド実行直後は全部 Enter

$ cd ~/.ssh

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxxxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xxxxx/.ssh/id_rsa
Your public key has been saved in /home/xxxxx/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxx xxxxx@ubuntu2004
The key's randomart image is:
+---[RSA 3072]----+
+----[SHA256]-----+

$ ls -l
total 32
-rw------- 1 xxxxx xxxxx  2610  8月 11 13:34 id_rsa
-rw-r--r-- 1 xxxxx xxxxx   572  8月 11 13:34 id_rsa.pub
-rw-r--r-- 1 xxxxx xxxxx 18644  7月 24 16:08 known_hosts
PINTOPINTO

公開鍵をクリップボードへコピー。Ubuntu の場合は xsel コマンド。Mac の場合は pbcopy コマンド。

$ sudo apt install xsel
$ cat ~/.ssh/id_rsa.pub | xsel --clipboard --input
PINTOPINTO

Title に適当な名前を入力し、Key にクリップボードにコピーした鍵を貼り付けて Add SSH Key ボタンをクリック。
Add new

PINTOPINTO

一度、接続確認。成功の図。

$ ssh -T git@github.com

Hi PINTO0309! You've successfully authenticated, but GitHub does not provide shell access.
PINTOPINTO

Dockerfile の先頭に以下1行を追記する。

# syntax=docker/dockerfile:1

https://docs.docker.jp/engine/reference/builder.html#syntax
対象の Dockerfile が構築時に使う、 Dockerfile 構文syntax の場所を定義します。BuildKit バックエンドは Docker イメージとして配布され、コンテナのサンドボックス環境内で実行される 外部実装external implementation をシームレスに利用できます。 何言ってるか分からんけどそういうことらしい。

PINTOPINTO

Dockerfile の中でリソースをPullする箇所の前までのどこかに下記を追記する。このコマンドをbuild時に有効にするために、Dockerfile の序盤で openssh-clientapt install しておく必要がある。

RUN mkdir -m 700 ${HOME}/.ssh \
    && ssh-keyscan github.com > ${HOME}/.ssh/known_hosts
PINTOPINTO

docker build コマンドを実行するときに下記のおまじないに従う。 docker build のシーケンス内でSSHのクレデンシャルが利用できるようにする。

$ export DOCKER_BUILDKIT=1
$ docker build -t xxx --ssh default .
このスクラップは2021/08/11にクローズされました