参考
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 .