r2d2bzh / docker-build-nodejs

Development and production Docker images for your NodeJS based application
3 stars 1 forks source link

Builds fail with buildkit #11

Closed gautaz closed 6 months ago

gautaz commented 1 year ago

Describe the bug Buildkit does not support ONBUILD COPY --from as described here. This technique is used to transfer the build result from the builder image to the runtime image.

To Reproduce The project test builds fail with buildkit enabled

Expected behavior If buildkit fails to support the ONBUILD COPY --from feature, a refactor is needed to support buildkit builds.

Logs

❯ docker compose --profile=test build
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.0s (0/0)
[+] Building 0.1s (1/2)
[+] Building 0.1s (0/1)
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile:                                            0.0s
[+] Building 0.1s (1/1)
[+] Building 0.1s (0/1)
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile:                                            0.0s
[+] Building 0.1s (1/1)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.1s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.1s (1/1)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.1s (2/2)
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 31B                                        0.0s
[+] Building 0.1s (1/1)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.1s (0/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.1s (0/1)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.1s (0/2)
[+] Building 0.3s (1/2)
 => [internal] load build definition from Dockerfile                       0.0s
[+] Building 0.2s (1/2)
[+] Building 0.2s (1/2)
[+] Building 0.2s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.2s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.2s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.2s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 32B                                        0.0s
[+] Building 0.3s (1/2)
 => [internal] load build definition from Dockerfile                       0.0s
[+] Building 0.3s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.3s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.3s (1/2)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.4s (3/6)
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 178B                                       0.0s
 => [internal] load .dockerignore                                          0.2s
[+] Building 0.3s (1/2)
[+] Building 0.4s (2/3)
[+] Building 0.4s (2/2)
[+] Building 0.4s (3/3)
[+] Building 0.5s (5/13)
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 249B                                       0.0s
 => [internal] load .dockerignore                                          0.2s
 => => transferring context: 56B                                           0.0s
[+] Building 0.6s (3/6)
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 178B                                       0.0s
[+] Building 0.5s (3/12)
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 32B                                        0.0s
 => [internal] load .dockerignore                                          0.2s
[+] Building 0.5s (2/4)
 => [internal] load build definition from Dockerfile                       0.1s
[+] Building 0.4s (2/3)
[+] Building 0.5s (4/6)
 => => transferring dockerfile: 217B                                       0.0s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 56B                                           0.0s
[+] Building 0.7s (6/8)
 => [internal] load build definition from Dockerfile                       0.2s
[+] Building 0.7s (5/6)
[+] Building 1.1s (6/6)
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 201B                                       0.0s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 64B                                           0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
 => [stage-2 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-runtime:dev     0.3s
 => [builder 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-builder:dev     0.6s
 => [internal] load build context                                          0.1s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 56B                                           0.0s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 56B                                           0.0s
 => => transferring context: 2B                                            0.0s
 => ERROR [stage-2 2/1] COPY --from=builder /tmp/service /                 0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
 => [stage-2 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-runtime:dev     0.3s
[+] Building 1.0s (6/6) FINISHED
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 178B                                       0.0s
 => [internal] load .dockerignore                                          0.3s
 => [stage-2 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-runtime:dev     0.3s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
 => ERROR [stage-2 2/1] COPY --from=builder /tmp/service /                 0.0s
 => [internal] load build definition from Dockerfile                       0.2s
 => => transferring dockerfile: 207B                                       0.0s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 2B                                            0.0s
 => => transferring context: 56B                                           0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
[+] Building 1.0s (7/8)
 => [internal] load build definition from Dockerfile                       0.2s
 => => transferring dockerfile: 201B                                       0.0s
 => [internal] load .dockerignore                                          0.3s
 => => transferring context: 64B                                           0.0s
 => [internal] load .dockerignore                                          0.3s
 => [stage-2 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-runtime:dev     0.3s
 => => transferring context: 56B                                           0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
 => [stage-2 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-runtime:dev     0.3s
 => [builder 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-builder:dev     0.6s
 => ERROR [stage-2 2/1] COPY --from=builder /tmp/service /                 0.0s
------age-2 2/1] COPY --from=builder /tmp/service /:vice /                 0.0s
[+] Building 1.1s (6/6) FINISHED
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 178B                                       0.0s
 => [internal] load .dockerignore                                          0.2s
 => => transferring context: 67B                                           0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-runt  0.0s
 => [builder 1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-builder:dev     0.6s
[+] Building 1.1s (7/13)
[+] Building 1.4s (8/13)
[+] Building 1.8s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 31B                                        0.0s
 => [internal] load .dockerignore                                          0.2s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for ghcr.io/r2d2bzh/docker-build-nodejs-deve  0.0s
 => [1/1] FROM ghcr.io/r2d2bzh/docker-build-nodejs-devenv:dev              0.3s
 => [2/1] RUN         echo "del:x:1000:100::/home/user:" >> /etc/passwd &  0.3s
 => [3/1] WORKDIR /home/user/dev                                           0.0s
 => exporting to image                                                     0.8s
 => => exporting layers                                                    0.7s
 => => writing image sha256:5f0565ec3ecddc9bd55205227c86ba9677493bbee3d86  0.0s
 => => naming to docker.io/library/docker-build-nodejs-dev                 0.0s
failed to solve: failed to compute cache key: "/tmp/service" not found: not found

Desktop (please complete the following information):

Additional context The only workaround for now is to disable buildkit, i.e.:

DOCKER_BUILDKIT=0 docker compose --profile=test build
gautaz commented 6 months ago

Spring cleaning time! There is no need to keep this issue anymore, feel free to reopen a new one if needed.