Dockergit

参考

BuildKit でイメージ構築 — Docker-docs-ja 20.10 ドキュメント docker buildする際にhost側のssh keyを使ってbuildする - Qiita Docker の BuildKit を使ってセキュアなビルドを試す - Qiita

デフォルトのssh keyを使う場合

# syntax=docker/dockerfile:1
FROM alpine
 
# ssh クライアントと git をインストール
RUN apk add --no-cache openssh-client git
 
# github.com のための公開鍵をダウンロード
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
 
# プライベート・リポジトリのクローン
RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
$ export DOCKER_BUILDKIT=1
$ docker build --ssh default .

ファイルを指定する場合

type=secret を使うと以下のようにできる

# syntax = docker/dockerfile:1
 
FROM alpine
 
# デフォルトのシークレットの場所から、シークレットを表示
RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret
 
# 任意のシークレットの場所から、シークレットを表示
RUN --mount=type=secret,id=mysecret,dst=/foobar cat /foobar
$ docker build --secret id=mysecret,src=mysecret.txt .

これを使ってssh keyを渡す

# syntax=docker/dockerfile:1
FROM alpine
 
# ssh クライアントと git をインストール
RUN apk add --no-cache openssh-client git
 
# github.com のための公開鍵をダウンロード
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
 
# プライベート・リポジトリのクローン
RUN --mount=type=secret,id=ssh,dst=/root/.ssh/id_rsa git clone git@github.com:myorg/myproject.git myproject
$ docker build --secret id=ssh,src=~/.ssh/id_rsa_github .