dotnet / docker-tools

This is a repo to house some common tools for our various docker repos.
MIT License
122 stars 46 forks source link

Use Docker buildx build context to dynamically replace FROM statements in Dockerfiles #1237

Open lbussell opened 5 months ago

lbussell commented 5 months ago

Docker buildx has a feature that allows you to dynamically override any of the FROM statements in a Dockerfile at build-time. For example, --build-context mcr.microsoft.com/dotnet/runtime:8.0=mycustomacr.azurecr.io/repo:tag.

https://docs.docker.com/reference/cli/docker/buildx/build/#build-context

This means we wouldn't need to parameterize the source REPO of many of our Dockerfiles like we do today, making our Dockerfiles cleaner: https://github.com/dotnet/dotnet-docker/blob/87b3735c6c2ba37277be80dd04099f6cb93e4bb7/src/aspnet/8.0/alpine3.18/arm32v7/Dockerfile#L1-L2

dotnet-issue-labeler[bot] commented 5 months ago

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

MichaelSimons commented 5 months ago

One question is if we would do this for linux only as Windows doesn't have official support for buildx yet (currently in-progress)?

mthalman commented 5 months ago

This would allow us to get rid of this functionality too: https://github.com/dotnet/docker-tools/pull/1031

lbussell commented 5 months ago

[Triage] This would be nice to have. We need to do more investigation on the Windows BuildKit support (but that shouldn't necessarily block Linux adoption).