Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
fbfa384
Added and enabled ASP.NET Composite Images, following the messed up P…
ivdiazsa May 5, 2023
fa81417
Changed the composite suffix to match the other tags naming conventio…
ivdiazsa May 5, 2023
de07614
Added the environment variable 'DOTNET_VERSION' to the composite Dock…
ivdiazsa May 5, 2023
9147f59
Addressed some comments. Haven't regenerated the composite Dockerfile…
ivdiazsa May 8, 2023
1feaa43
Fake composite Dockerfiles to see if the Set-DotnetVersions script wi…
ivdiazsa May 8, 2023
0c1ca68
Generated and added the SHA's for the Composite Dockerfiles.
ivdiazsa May 8, 2023
a431f15
Added placeholders for the composite images sizes in the ImageSize.ni…
ivdiazsa May 9, 2023
3e39eef
Merge branch 'nightly' into containers-base
ivdiazsa May 9, 2023
7309915
Added at least the template for the Aspnet Composite Container tests.…
ivdiazsa May 10, 2023
bf383ad
Does not work yet: Added base abstract class for Aspnet tests, both n…
ivdiazsa May 11, 2023
183b642
Merge branch 'nightly' into containers-base
ivdiazsa May 15, 2023
8b6d6f1
Updated Composite Dockerfiles with the most recent Nightly Branch
ivdiazsa May 15, 2023
a981e74
Undid the abstract class change because Xunit doesn't like it
ivdiazsa May 15, 2023
202ea3e
Refactored the Aspnet and Composite tests using a new approach.
ivdiazsa May 16, 2023
c6e83af
Merge branch 'nightly' into containers-base
ivdiazsa May 16, 2023
3960705
Merge branch 'nightly' into containers-base
ivdiazsa May 17, 2023
02a8a3e
Addressed given feedback.
ivdiazsa May 17, 2023
b77d178
Accommodate aspnet and composite versions side-by-side in update-depe…
lbussell May 17, 2023
be696df
Added 'aspnet-composite' to the main 'run-tests.ps1' script
ivdiazsa May 18, 2023
c3133e2
Merge branch 'nightly' into containers-base
ivdiazsa May 18, 2023
c70c886
Fixed merge conflict on README.aspnet.md
ivdiazsa May 18, 2023
158eb7a
Sigh now versions changed
ivdiazsa May 18, 2023
43ae096
Shas...
ivdiazsa May 18, 2023
b20f87a
Add real image sizes
lbussell May 19, 2023
99ee0ed
Added composite containers documentation.
ivdiazsa May 19, 2023
51f7e31
Rephrased and moved composites doc
ivdiazsa May 22, 2023
5eabb6c
Made composites a subsection of About
ivdiazsa May 22, 2023
321434a
Flow top-header to the composite sub-template
ivdiazsa May 22, 2023
d385abd
Templates were wrong
ivdiazsa May 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .mar/portal/README.aspnet.portal.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@

This image contains the ASP.NET Core and .NET runtimes and libraries and is optimized for running ASP.NET Core apps in production.

### Composite container images

Starting from .NET 8, a composite version of the ASP.NET images, `denoted with the -composite` tag part, is being offered alongside the regular image. The main characteristics of these images are their smaller size on disk while keeping the performance of the default [ReadyToRun (R2R) setting](https://learn.microsoft.com/dotnet/core/deploying/ready-to-run). The caveat is that the composite images have tighter version coupling. This means the final app run on them cannot use handpicked custom versions of the framework and/or ASP.NET assemblies that are built into the composite binary.

For a full technical description on how the composites work, we have a [feature doc here](https://github.com/dotnet/runtime/blob/main/docs/design/features/readytorun-composite-format-design.md).

Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) for Docker-related .NET announcements.

## Featured Tags
Expand Down
9 changes: 9 additions & 0 deletions README.aspnet.md
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should really have some sort of documentation that describes the purpose of these composite images (i.e. what are they? how do they differ from the regular aspnet images? how do I determine which one to use?). If necessary, this can link to another doc page that describes things in more detail.

Note that the Docker repository readmes are generated from templates. For example, the About section of README.aspnet.md comes from https://github.com/dotnet/dotnet-docker/blob/nightly/eng/readme-templates/About.aspnet.md. Readmes can be regenerated from templates by running eng\readme-templates\Get-GeneratedReadmes.ps1

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mthalman - we have a technical description of the composite format here:

https://github.com/dotnet/runtime/blob/main/docs/design/features/readytorun-composite-format-design.md

In terms of our current shipping story the composite container is a tool a customer can use to reduce container size on disk while keeping performance of default R2R publishing with the caveat that the composite container has tighter version coupling - in particular, the final app is not allowed to use handpicked custom versions of framework / ASP.NET assemblies that are baked into the composite image. @ivdiazsa - please let me know if you need further help with the actual wording.

Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@

This image contains the ASP.NET Core and .NET runtimes and libraries and is optimized for running ASP.NET Core apps in production.

## Composite container images

Starting from .NET 8, a composite version of the ASP.NET images, `denoted with the -composite` tag part, is being offered alongside the regular image. The main characteristics of these images are their smaller size on disk while keeping the performance of the default [ReadyToRun (R2R) setting](https://learn.microsoft.com/dotnet/core/deploying/ready-to-run). The caveat is that the composite images have tighter version coupling. This means the final app run on them cannot use handpicked custom versions of the framework and/or ASP.NET assemblies that are built into the composite binary.

For a full technical description on how the composites work, we have a [feature doc here](https://github.com/dotnet/runtime/blob/main/docs/design/features/readytorun-composite-format-design.md).

Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) for Docker-related .NET announcements.

# Usage
Expand Down Expand Up @@ -73,6 +79,7 @@ Tags | Dockerfile | OS Version
-----------| -------------| -------------
8.0.0-preview.5-bookworm-slim-amd64, 8.0-preview-bookworm-slim-amd64, 8.0.0-preview.5-bookworm-slim, 8.0-preview-bookworm-slim, 8.0.0-preview.5, 8.0-preview, latest | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/bookworm-slim/amd64/Dockerfile) | Debian 12
8.0.0-preview.5-alpine3.17-amd64, 8.0-preview-alpine3.17-amd64, 8.0-preview-alpine-amd64, 8.0.0-preview.5-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/alpine3.17/amd64/Dockerfile) | Alpine 3.17
8.0.0-preview.5-alpine3.17-composite-amd64, 8.0-preview-alpine3.17-composite-amd64, 8.0-preview-alpine-composite-amd64, 8.0.0-preview.5-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/alpine3.17-composite/amd64/Dockerfile) | Alpine 3.17
8.0.0-preview.5-jammy-amd64, 8.0-preview-jammy-amd64, 8.0.0-preview.5-jammy, 8.0-preview-jammy | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/jammy/amd64/Dockerfile) | Ubuntu 22.04
8.0.0-preview.5-jammy-chiseled-amd64, 8.0-preview-jammy-chiseled-amd64, 8.0.0-preview.5-jammy-chiseled, 8.0-preview-jammy-chiseled | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/jammy-chiseled/amd64/Dockerfile) | Ubuntu 22.04

Expand All @@ -94,6 +101,7 @@ Tags | Dockerfile | OS Version
-----------| -------------| -------------
8.0.0-preview.5-bookworm-slim-arm64v8, 8.0-preview-bookworm-slim-arm64v8, 8.0.0-preview.5-bookworm-slim, 8.0-preview-bookworm-slim, 8.0.0-preview.5, 8.0-preview, latest | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/bookworm-slim/arm64v8/Dockerfile) | Debian 12
8.0.0-preview.5-alpine3.17-arm64v8, 8.0-preview-alpine3.17-arm64v8, 8.0-preview-alpine-arm64v8, 8.0.0-preview.5-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/alpine3.17/arm64v8/Dockerfile) | Alpine 3.17
8.0.0-preview.5-alpine3.17-composite-arm64v8, 8.0-preview-alpine3.17-composite-arm64v8, 8.0-preview-alpine-composite-arm64v8, 8.0.0-preview.5-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/alpine3.17-composite/arm64v8/Dockerfile) | Alpine 3.17
8.0.0-preview.5-jammy-arm64v8, 8.0-preview-jammy-arm64v8, 8.0.0-preview.5-jammy, 8.0-preview-jammy | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/jammy/arm64v8/Dockerfile) | Ubuntu 22.04
8.0.0-preview.5-jammy-chiseled-arm64v8, 8.0-preview-jammy-chiseled-arm64v8, 8.0.0-preview.5-jammy-chiseled, 8.0-preview-jammy-chiseled | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/jammy-chiseled/arm64v8/Dockerfile) | Ubuntu 22.04

Expand All @@ -115,6 +123,7 @@ Tags | Dockerfile | OS Version
-----------| -------------| -------------
8.0.0-preview.5-bookworm-slim-arm32v7, 8.0-preview-bookworm-slim-arm32v7, 8.0.0-preview.5-bookworm-slim, 8.0-preview-bookworm-slim, 8.0.0-preview.5, 8.0-preview, latest | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/bookworm-slim/arm32v7/Dockerfile) | Debian 12
8.0.0-preview.5-alpine3.17-arm32v7, 8.0-preview-alpine3.17-arm32v7, 8.0-preview-alpine-arm32v7, 8.0.0-preview.5-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/alpine3.17/arm32v7/Dockerfile) | Alpine 3.17
8.0.0-preview.5-alpine3.17-composite-arm32v7, 8.0-preview-alpine3.17-composite-arm32v7, 8.0-preview-alpine-composite-arm32v7, 8.0.0-preview.5-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/alpine3.17-composite/arm32v7/Dockerfile) | Alpine 3.17
8.0.0-preview.5-jammy-arm32v7, 8.0-preview-jammy-arm32v7, 8.0.0-preview.5-jammy, 8.0-preview-jammy | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/jammy/arm32v7/Dockerfile) | Ubuntu 22.04
8.0.0-preview.5-jammy-chiseled-arm32v7, 8.0-preview-jammy-chiseled-arm32v7, 8.0.0-preview.5-jammy-chiseled, 8.0-preview-jammy-chiseled | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet/8.0/jammy-chiseled/arm32v7/Dockerfile) | Ubuntu 22.04

Expand Down
2 changes: 1 addition & 1 deletion eng/Set-DotnetVersions.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ if ($SdkVersion) {
}

if ($AspnetVersion) {
$updateDepsArgs += @("--product-version", "aspnet=$AspnetVersion", "--product-version", "aspnet-runtime-targeting-pack=$AspnetVersion")
$updateDepsArgs += @("--product-version", "aspnet=$AspnetVersion", "--product-version", "aspnet-runtime-targeting-pack=$AspnetVersion", "--product-version", "aspnet-composite=$AspnetVersion")
}

if ($RuntimeVersion) {
Expand Down
98 changes: 98 additions & 0 deletions eng/dockerfile-templates/aspnet/Dockerfile.linux-composite
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{{
set dotnetVersion to join(slice(split(PRODUCT_VERSION, "."), 0, 2), ".") ^
set isAlpine to find(OS_VERSION, "alpine") >= 0 ^
set isMariner to find(OS_VERSION, "mariner") >= 0 ^
set isDistroless to find(OS_VERSION, "distroless") >= 0 || find(OS_VERSION, "chiseled") >= 0 ^
set isFullMariner to isMariner && !isDistroless ^
set isDistrolessMariner to isMariner && isDistroless ^
set baseUrl to VARIABLES[cat("base-url|", dotnetVersion, "|", VARIABLES["branch"])] ^
set isInternal to find(baseUrl, "msrc") >= 0 || find(baseUrl, "internal") >= 0 ^
set isRpmInstall to false ^
set isSingleStage to (isAlpine || isRpmInstall) && !isInternal ^
set runtimeDepsBaseTag to
cat("$REPO:", VARIABLES[cat("dotnet|", dotnetVersion, "|product-version")], "-", OS_VERSION, ARCH_TAG_SUFFIX) ^
set osVersionBase to when(isDistroless, match(OS_VERSION, ".+(?=.*-)")[0], OS_VERSION_BASE) ^
set installerImageTag to when(isDistrolessMariner,
cat("mcr.microsoft.com/cbl-mariner/base/core:", OS_VERSION_NUMBER),
when(isAlpine || isFullMariner,
runtimeDepsBaseTag,
cat(ARCH_VERSIONED, "/buildpack-deps:", osVersionBase, "-curl")))
}}ARG REPO=mcr.microsoft.com/dotnet/runtime-deps{{ if isSingleStage:
{{

_ SINGLE STAGE
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would just like to note that there are unused options in this file but we should leave them for if we decide to ship non-musl variants of composite images in the future.


}}FROM {{runtimeDepsBaseTag}}
{{ if isAlpine:
{{InsertTemplate("../Dockerfile.alpine.invariant-mode")}}
}}
{{InsertTemplate("../runtime/Dockerfile.envs")}}
{{InsertTemplate("Dockerfile.envs")}}

# Install ASP.NET Composite Runtime
{{InsertTemplate("../runtime/Dockerfile.linux.install-runtime",
[
"install-method": "download-and-install",
"dest-dir": "/usr/share/dotnet",
"add-symlink": !isRpmInstall,
"is-rpm-install": isRpmInstall,
"is-composite-runtime": "true",
])}}^
else:{{

_ MULTI STAGE

}}

# Installer image
FROM {{installerImageTag}} AS installer
{{ if isInternal:
ARG SAS_QUERY_STRING
}}{{ if isDistrolessMariner:
{{InsertTemplate("../Dockerfile.linux.distroless-mariner-installer-prereqs")}}
^elif isFullMariner && !isRpmInstall:
RUN {{InsertTemplate("../Dockerfile.linux.install-pkgs",
[
"pkgs": ["tar"]
])}}
}}

# Retrieve ASP.NET Composite Runtime
{{InsertTemplate("../runtime/Dockerfile.linux.install-runtime",
[
"install-method": when(isInternal && isRpmInstall, "download", "download-and-install"),
"use-local-version-var": "true",
"dest-dir": when(isDistroless, "/usr/share/dotnet", "/dotnet"),
"is-internal": isInternal,
"url-suffix": when(isInternal, "$SAS_QUERY_STRING", ""),
"is-rpm-install": isRpmInstall,
"is-composite-runtime": "true"
])}}{{ if isDistroless:

RUN mkdir /dotnet-symlink \
&& ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet}}

# ASP.NET Composite Runtime Image
FROM {{runtimeDepsBaseTag}}

{{InsertTemplate("../runtime/Dockerfile.envs")}}
{{InsertTemplate("Dockerfile.envs")}}
{{ if isInternal && isRpmInstall:
{{InsertTemplate("Dockerfile.linux.install-runtime",
[
"install-method": "copy-and-install",
"dest-dir": when(isDistroless, "/usr/share/dotnet", "/dotnet"),
"is-internal": isInternal,
"url-suffix": when(isInternal, "$SAS_QUERY_STRING", ""),
"installer-stage": "installer",
"is-rpm-install": isRpmInstall
])}}}}{{ if isDistroless:
COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"]
COPY --from=installer ["/dotnet-symlink", "/usr/bin"]{{ if !isMariner || dotnetVersion != "6.0":

ENTRYPOINT ["/usr/bin/dotnet"]
CMD ["--info"]}}^
elif !(isInternal && isRpmInstall):
COPY --from=installer ["/dotnet", "/usr/share/dotnet"]
RUN {{InsertTemplate("../runtime/Dockerfile.linux.symlink")}}}}}}

52 changes: 39 additions & 13 deletions eng/dockerfile-templates/runtime/Dockerfile.linux.install-runtime
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
is-internal (optional): Whether the Dockerfile is targeting an internal build of the product.
url-suffix (optional): Suffix string to append the end of the URL.
installer-stage (optional): Name of the Dockerfile stage responsible for installation
is-rpm-install (optional): Whether to install RPM versus tarball ^
is-rpm-install (optional): Whether to install RPM versus tarball
is-composite-runtime (optional): Whether to install aspnetcore composite version ^

set dotnetVersion to join(slice(split(PRODUCT_VERSION, "."), 0, 2), ".") ^
set isAlpine to find(OS_VERSION, "alpine") >= 0 ^
Expand All @@ -19,15 +20,30 @@
when(ARGS["is-internal"],
VARIABLES[cat("runtime|", dotnetVersion, "|build-version")],
"$DOTNET_VERSION")) ^
set aspnetCompositeVersionDir to when(ARGS["use-local-version-var"],
"$aspnetcore_version",
when(ARGS["is-internal"],
VARIABLES[cat("aspnet|", dotnetVersion, "|build-version")],
"$ASPNET_VERSION")) ^
set isInternalStableBranding to ARGS["is-internal"] &&
(find(VARIABLES[cat("sdk|", dotnetVersion, "|build-version")], "-servicing") >= 0 ||
find(VARIABLES[cat("sdk|", dotnetVersion, "|build-version")], "-rtm") >= 0) ^
set runtimeVersionFile to when(isInternalStableBranding,
VARIABLES[cat("dotnet|", dotnetVersion, "|product-version")],
runtimeVersionDir) ^
set runtimeBaseUrl to cat(
VARIABLES[cat("base-url|", dotnetVersion, "|", VARIABLES["branch"])],
"/Runtime/", runtimeVersionDir, "/") ^
set aspnetCompositeVersionFile to when(isInternalStableBranding,
VARIABLES[cat("dotnet|", dotnetVersion, "|product-version")],
aspnetCompositeVersionDir) ^
set fileArch to when(ARGS["is-rpm-install"] && ARCH_SHORT = "arm64", "aarch64", ARCH_SHORT) ^
set fileExt to when(ARGS["is-rpm-install"], "rpm", "tar.gz") ^
set filePlatform to when(ARGS["is-rpm-install"], "", when(isAlpine, "-linux-musl", "-linux")) ^
set baseUrl to VARIABLES[cat("base-url|", dotnetVersion, "|", VARIABLES["branch"])] ^
set runtimeBaseUrl to cat(baseUrl, "/Runtime/", runtimeVersionDir, "/") ^
set aspnetCompositeUrl to cat(baseUrl, "/aspnetcore/Runtime/", aspnetCompositeVersionDir, "/aspnetcore-runtime-composite-", aspnetCompositeVersionFile,
filePlatform, "-", fileArch, ".", fileExt, ARGS["url-suffix"]) ^
set localVersionVar to when(ARGS["is-composite-runtime"],
VARIABLES[cat("runtime|", dotnetVersion, "|build-version")],
VARIABLES[cat("aspnet|", dotnetVersion, "|build-version")]) ^
set rpmFileArch to when(ARCH_SHORT = "arm64", "aarch64", ARCH_SHORT) ^
set rpms to [
[
Expand All @@ -49,15 +65,24 @@
"sha-var-name": "dotnet_sha512"
]
] ^
set tarballs to [
set tarballs to when(ARGS["is-composite-runtime"],
[
"filename": "dotnet.tar.gz",
"url": cat(runtimeBaseUrl, "dotnet-runtime-", runtimeVersionFile, "-", varPlatform, "-", ARCH_SHORT, ".tar.gz",
ARGS["url-suffix"]),
"sha": VARIABLES[join(["runtime", dotnetVersion, varPlatform, ARCH_SHORT, "sha"], "|")],
"sha-var-name": "dotnet_sha512"
]
] ^
[
"filename": "dotnet.tar.gz",
"url": aspnetCompositeUrl,
"sha": VARIABLES[join(["aspnet-composite", dotnetVersion, varPlatform, ARCH_SHORT, "sha"], "|")],
"sha-var-name": "dotnet_sha512"
]
],
[
[
"filename": "dotnet.tar.gz",
"url": cat(runtimeBaseUrl, "dotnet-runtime-", runtimeVersionFile, "-", varPlatform, "-", ARCH_SHORT, ".tar.gz",
ARGS["url-suffix"]),
"sha": VARIABLES[join(["runtime", dotnetVersion, varPlatform, ARCH_SHORT, "sha"], "|")],
"sha-var-name": "dotnet_sha512"
]
]) ^
set files to when(ARGS["is-rpm-install"], rpms, tarballs) ^
set copyEnabled to ARGS["install-method"] = "copy-and-install" ^
set downloadEnabled to ARGS["install-method"] = "download" || ARGS["install-method"] = "download-and-install" ^
Expand All @@ -70,7 +95,8 @@ if copyEnabled:{{InsertTemplate("../Dockerfile.linux.copy-files",
"destination": ""
])
}}
}}RUN {{if ARGS["use-local-version-var"]:dotnet_version={{VARIABLES[cat("runtime|", dotnetVersion, "|build-version")]}} \
}}RUN {{if ARGS["use-local-version-var"]:{{ if ARGS["is-composite-runtime"]:aspnetcore_version={{VARIABLES[cat("aspnet|", dotnetVersion, "|buildVersion")]}} ^
else:dotnet_version={{VARIABLES[cat("runtime|", dotnetVersion, "|build-version")]}}}} \
&& }}{{InsertTemplate("../Dockerfile.linux.download-and-install",
[
"files": files,
Expand Down
6 changes: 6 additions & 0 deletions eng/mcr-tags-metadata-templates/aspnet-tags.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ $(McrTagsYmlTagGroup:8.0-preview-bookworm-slim-amd64)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-alpine3.17-amd64)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-alpine3.17-composite-amd64)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-jammy-amd64)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-jammy-chiseled-amd64)
Expand All @@ -20,6 +22,8 @@ $(McrTagsYmlTagGroup:8.0-preview-bookworm-slim-arm64v8)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-alpine3.17-arm64v8)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-alpine3.17-composite-arm64v8)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-jammy-arm64v8)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-jammy-chiseled-arm64v8)
Expand All @@ -37,6 +41,8 @@ $(McrTagsYmlTagGroup:8.0-preview-bookworm-slim-arm32v7)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-alpine3.17-arm32v7)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-alpine3.17-composite-arm32v7)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-jammy-arm32v7)
customSubTableTitle: .NET 8 Preview Tags
$(McrTagsYmlTagGroup:8.0-preview-jammy-chiseled-arm32v7)
Expand Down
2 changes: 2 additions & 0 deletions eng/readme-templates/About.aspnet.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
This image contains the ASP.NET Core and .NET runtimes and libraries and is optimized for running ASP.NET Core apps in production.

{{InsertTemplate("About.composite-aspnet.md", [ "top-header": ARGS["top-header"] ])}}
9 changes: 9 additions & 0 deletions eng/readme-templates/About.composite-aspnet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{{
_ ARGS:
top-header: The string to use as the top-level header.
readme-host: Moniker of the site that will host the readme
}}{{ARGS["top-header"]}}# Composite container images

Starting from .NET 8, a composite version of the ASP.NET images, `denoted with the -composite` tag part, is being offered alongside the regular image. The main characteristics of these images are their smaller size on disk while keeping the performance of the default [ReadyToRun (R2R) setting](https://learn.microsoft.com/dotnet/core/deploying/ready-to-run). The caveat is that the composite images have tighter version coupling. This means the final app run on them cannot use handpicked custom versions of the framework and/or ASP.NET assemblies that are built into the composite binary.

For a full technical description on how the composites work, we have a [feature doc here](https://github.com/dotnet/runtime/blob/main/docs/design/features/readytorun-composite-format-design.md).
2 changes: 1 addition & 1 deletion eng/readme-templates/About.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@
"leading-line-break": "true",
"readme-host": ARGS["readme-host"]
])}}}}
{{InsertTemplate(join(["About", templateQualifier, "md"], "."))}}
{{InsertTemplate(join(["About", templateQualifier, "md"], "."), [ "top-header": ARGS["top-header"] ])}}

Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) for Docker-related .NET announcements.
1 change: 1 addition & 0 deletions eng/update-dependencies/DockerfileShaUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ public DockerfileShaUpdater(
{ "runtime-deps-cm.2", new string[] { $"$DOTNET_BASE_URL/Runtime/$VERSION_DIR/dotnet-runtime-deps-$VERSION_FILE-cm.2-{GetRpmArchFormat()}.$ARCHIVE_EXT" } },

{ "aspnet", new string[] { $"$DOTNET_BASE_URL/aspnetcore/Runtime/$VERSION_DIR/aspnetcore-runtime-$VERSION_FILE$OPTIONAL_OS-{GetRuntimeSdkArchFormat()}.$ARCHIVE_EXT" } },
{ "aspnet-composite", new string[] { $"$DOTNET_BASE_URL/aspnetcore/Runtime/$VERSION_DIR/aspnetcore-runtime-composite-$VERSION_FILE$OPTIONAL_OS-{GetRuntimeSdkArchFormat()}.$ARCHIVE_EXT" } },
{
"aspnet-runtime-targeting-pack",
new string[]
Expand Down
Loading