Images are published to ECR at
055209842064.dkr.ecr.eu-west-1.amazonaws.com/image-dotnet. Each build attaches
the ASP.NET version it actually ships as extra tags, so the registry listing
answers "what runs in prod" without resolving a digest:
| Tag (moving) | Based on | Also tagged as | Description |
|---|---|---|---|
8-chiseled | mcr.microsoft.com/dotnet/aspnet:8.0-jammy-chiseled-extra | 8.0-chiseled, 8.0.<patch>-chiseled | Microsoft Chiseled container |
9-chiseled | mcr.microsoft.com/dotnet/aspnet:9.0-noble-chiseled-extra | 9.0-chiseled, 9.0.<patch>-chiseled | Microsoft Chiseled container |
10-chiseled | mcr.microsoft.com/dotnet/aspnet:10.0.-noble-chiseled-extra | 10.0-chiseled, 10.0.<patch>-chiseled | Microsoft Chiseled container |
All three tags on a row point at the same manifest; the version tags are re-pointed on every rebuild, so a pinned consumer still gets digest bumps.
8/, 8-alpine/ and 8-alpine-tools/ have no CircleCI job, and ECR holds
no tag for them — docker pull .../image-dotnet:8-alpine does not resolve. They
are still built by a legacy Docker Hub autobuild into the public
docker.io/tibber/image-dotnet repo (as 8.0, 8.0-alpine,
8.0-alpine-tools), which is the only registry serving those variants today.
No repo in the Tibber org pins them. Do not pin them for new work.
Both stages come from MCR and carry the same version, so unlike image-nodejs
and image-python the FROM tag here is truthful. It is not always precise,
though: only 10-chiseled/ pins a patch — 8-chiseled/ and 9-chiseled/
float on 8.0 / 9.0.
CI reads ASPNET_VERSION off the runtime image on every branch and prints it,
so each Renovate PR reports the exact version its image ships. It is
report-only and never fails the build. (It reads the image config rather than
running dotnet --version: the chiseled images have no shell.)
Pin the version tag and the digest:
FROM 055209842064.dkr.ecr.eu-west-1.amazonaws.com/image-dotnet:10.0-chiseled@sha256:<digest>
They do two different jobs, and you want both:
pinDigests in the shared
preset adds the digest for you.Renovate maintains the pair together, so the bump you get reads:
Update image-dotnet 10.0-chiseled -> 10.1-chiseled
Pinning the bare 10-chiseled still works, and is what most services do today, but
then the file records nothing and the bump reads Update image-dotnet:10-chiseled Docker digest to 1c4a9b7.
10.0.<patch>-chiseled is published too if you want the patch recorded.
To build locally, first download the prestop-signal binaries:
cd 10-chiseled # or whichever image directory
VERSION=0.0.33
gh release download "v${VERSION}" --repo tibber/prestop-signal \
--pattern "prestop-signal_${VERSION}_linux_amd64.tar.gz" \
--output - | tar -xzf - --to-stdout prestop-signal > prestop-signal-amd64
gh release download "v${VERSION}" --repo tibber/prestop-signal \
--pattern "prestop-signal_${VERSION}_linux_arm64.tar.gz" \
--output - | tar -xzf - --to-stdout prestop-signal > prestop-signal-arm64
Then build the image:
docker buildx build --platform linux/amd64 -t image-dotnet:10-chiseled .
Content type
Image
Digest
sha256:7a6087855…
Size
177.6 MB
Last updated
1 day ago
docker pull tibber/image-dotnet:8.0-alpine-tools