Hi, I’m trying to figure out how to use multi-stage builds to accomplish the following:
- Download a .deb package
- Install the .deb
- Delete the .deb
However, since the package is rather large, I would like it if the final image size does not include the .deb that was downloaded. Without multi-stage builds I would do something like
RUN \ curl -o /tmp/pkg.deb "$URI" && \ dpkg -i /tmp/pkg.deb && \ rm /tmp/pkg.deb
I believe with a multi-stage build, I could create a smaller final image, while still leaving things more flexible than the above approach. So my first thought was:
FROM debian AS download RUN curl -o /pkg.deb "$URI" RUN dpkg -i /pkg.deb FROM debian COPY --from=download ???
But what would I copy? The whole root, except for /tmp? Really, what I would love to be able to do is mount one image into another, so I could do something like
FROM debian AS download RUN curl -o /pkg.deb "$URI" FROM debian RUN mount ? /mnt RUN dpkg -i /mnt/pkg.deb RUN umount /mnt
Anyway, I guess my question is, is there any way to use multi-stage builds to copy a file from a previous image, run a command, and then delete it (or have an equivalent effect, such as mounting a previous image)?