buildkit
buildkit copied to clipboard
Additional contexts should not send unused files
Issue
Why additional context (ctx2 example below) transfers unused files to the daemon even when they are not used? Note, the main context skips unused files.
I would expect the same behavior for skipping unused files when using multiple contexts
Steps to reproduce:
$ mkdir tmp ctx2 && cd ctx2
$ touch ctx2_used
$ head -c 3MB /dev/urandom > ctx2_unused
$ cd ../tmp
$ touch used
$ head -c 2MB /dev/urandom > unused
$ echo -e "#syntax=docker/dockerfile:1.4 \n FROM ubuntu\n COPY used tmp/ \n COPY --from=ctx2 ctx2_used tmp/" > Dockerfile
$ docker buildx build -t two-contexts --build-context=ctx2=../ctx2 .
see ctx2 transferring 3.00MB in image. My actual use case, in terms of size, is way bigger than this.
Environment:
docker -v
Docker version 20.10.17, build 100c701
docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 2
Server Version: 20.10.17
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
Default Runtime: runc
Init Binary: docker-init
containerd version: 0197261a30bf81f1ee8e6a4dd2dea0ef95d67ccb
runc version: v1.1.3-0-g6724737
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 4.18.0-372.13.1.el8_6.x86_64
Operating System: Rocky Linux 8.6 (Green Obsidian)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.644GiB
Name: dd-rocky8
ID: 7WUG:QLRD:XFM4:H2AM:U42E:AF3C:PXS5:T6ZW:CMH2:AWPQ:DVXI:EOUG
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false