testcontainers / testcontainers/testcontainers-java

Make it possible to use build docker image using BuildKit

オープン
#2,857 コメント 14 件 リアクション 5 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

resolution/acknowledged resolution/somedaymaybe
主要言語
Java
スター
8.7k
フォーク
1.9k
平均マージ
2日 17時間
マージ済み PR(30日)
9

説明

As per Docker release 18.09 it is possible to mount cache (using BuildKit) explained

Example dockerfile

# syntax = docker/dockerfile:1.0-experimental

#RUN --mount=type=cache,target=/home/gradle/.gradle gradle build

However when build such image, it is gives an error

Dockerfile parse error line 12: Unknown flag: mount

Code to build:

new GenericContainer<>(
                new ImageFromDockerfile()
                                .withDockerfile(Path.of("Dockerfile").toAbsolutePath())
        )

I order to build such docker image from CLI, you need to set DOCKER_BUILDKIT=1 in order to use buildkit.

While analyzing docker cli source code it seems like it is appending such query parameter to REST API call version=2

Unfortunately, I do not see any documented version parameters in the official API documentation.
https://docs.docker.com/engine/api/v1.40/#operation/ImageBuild

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

issue で言及されている ImageFromDockerfile のビルドパスと Docker client の ImageBuild リクエストから始め、次に Docker CLI がどのように BuildKit を有効化し、version=2 を渡しているかを比較します。そのパラメーターに対する Docker API の動作を確認します。提供された RUN --mount を使用する Dockerfile が GenericContainer 経由で Unknown flag エラーなしに正常にビルドできれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
docker, java
領域
build-system, devops
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。