0
0

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 3 years have passed since last update.

Docker Build kitでroot以外でsecret/ssh keyを使う

Last updated at Posted at 2020-05-11

はじめに

DockerでPrivateリポジトリをCloneするときなど結構手間取りますよね。
Docker 18.09から導入されているDocker Build kitを使うといいというのは知っていたのですがUserを切り替えるとうまく行きませんでした。
その解決方法を書いていきます。

参考文献

moby/buildkit リポジトリに詳しく書いてあります。これ読めば大丈夫

設定例

前提条件

  • github.comにSSH接続できる公開鍵がある

  • ホスト側で下記コマンド実行例のような出力を得られる

    $ ssh git@github.com
    # 出力例
    PTY allocation request failed on channel 0
    Hi (User名)! You've successfully authenticated, but GitHub does not provide shell access.
    Connection to github.com closed.
    
  • Docker CE > 18.09

  • User: test(uid=1000,gid=1000)

Dockerfile

ポイントとしては、ファイル先頭のsyntaxを記述する必要があること、--mount=type=ssh,uid=100,gid=100のようにUserのIDとGIDを記述する必要があることです。記述しない場合はUID=0,GID=0のrootのみしか使えません。

# syntax = docker/dockerfile-upstream:master-experimental
# 行頭にsyntaxが必要、1.0.2以降であれば使えるようです
~略~
RUN mkdir -p -m 0600 ~/.ssh && \
    ssh-keyscan github.com >> ~/.ssh/known_hosts
RUN --mount=type=ssh,uid=1000,gid=1000 cd $HOME_DIR && git clone git@github.com:$USER/$REPOSITORY.git

Build例

DOCKER_BUILDKIT=1を宣言し、--sshを宣言してbuildする必要があります。

$ DOCKER_BUILDKIT=1 docker build --ssh default=~/.ssh/id_rsa . 

おわりに

以上で、プライベートリポジトリをgit clone出来るようになるはずです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?