-
Notifications
You must be signed in to change notification settings - Fork 2k
[Fixed] - Add Dockerfiles for Linux .NET Composite Images #4594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
fbfa384
fa81417
de07614
9147f59
1feaa43
0c1ca68
a431f15
3e39eef
7309915
bf383ad
183b642
8b6d6f1
a981e74
202ea3e
c6e83af
3960705
02a8a3e
b77d178
be696df
c3133e2
c70c886
158eb7a
43ae096
b20f87a
99ee0ed
51f7e31
5eabb6c
321434a
d385abd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -71,6 +71,7 @@ Tags | Dockerfile | OS Version | |
| -----------| -------------| ------------- | ||
| 8.0.0-preview.4-bookworm-slim-amd64, 8.0-preview-bookworm-slim-amd64, 8.0.0-preview.4-bookworm-slim, 8.0-preview-bookworm-slim, 8.0.0-preview.4, 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.4-alpine3.17-amd64, 8.0-preview-alpine3.17-amd64, 8.0-preview-alpine-amd64, 8.0.0-preview.4-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.4-alpine3.17-amd64-composite, 8.0-preview-alpine3.17-amd64-composite, 8.0-preview-alpine-amd64-composite, 8.0.0-preview.4-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet-composite/8.0/alpine3.17/amd64/Dockerfile) | Alpine 3.17 | ||
|
||
| 8.0.0-preview.4-jammy-amd64, 8.0-preview-jammy-amd64, 8.0.0-preview.4-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.4-jammy-chiseled-amd64, 8.0-preview-jammy-chiseled-amd64, 8.0.0-preview.4-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 | ||
|
|
||
|
|
@@ -92,6 +93,7 @@ Tags | Dockerfile | OS Version | |
| -----------| -------------| ------------- | ||
| 8.0.0-preview.4-bookworm-slim-arm64v8, 8.0-preview-bookworm-slim-arm64v8, 8.0.0-preview.4-bookworm-slim, 8.0-preview-bookworm-slim, 8.0.0-preview.4, 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.4-alpine3.17-arm64v8, 8.0-preview-alpine3.17-arm64v8, 8.0-preview-alpine-arm64v8, 8.0.0-preview.4-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.4-alpine3.17-arm64v8-composite, 8.0-preview-alpine3.17-arm64v8-composite, 8.0-preview-alpine-arm64v8-composite, 8.0.0-preview.4-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet-composite/8.0/alpine3.17/arm64v8/Dockerfile) | Alpine 3.17 | ||
| 8.0.0-preview.4-jammy-arm64v8, 8.0-preview-jammy-arm64v8, 8.0.0-preview.4-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.4-jammy-chiseled-arm64v8, 8.0-preview-jammy-chiseled-arm64v8, 8.0.0-preview.4-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 | ||
|
|
||
|
|
@@ -113,6 +115,7 @@ Tags | Dockerfile | OS Version | |
| -----------| -------------| ------------- | ||
| 8.0.0-preview.4-bookworm-slim-arm32v7, 8.0-preview-bookworm-slim-arm32v7, 8.0.0-preview.4-bookworm-slim, 8.0-preview-bookworm-slim, 8.0.0-preview.4, 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.4-alpine3.17-arm32v7, 8.0-preview-alpine3.17-arm32v7, 8.0-preview-alpine-arm32v7, 8.0.0-preview.4-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.4-alpine3.17-arm32v7-composite, 8.0-preview-alpine3.17-arm32v7-composite, 8.0-preview-alpine-arm32v7-composite, 8.0.0-preview.4-alpine3.17, 8.0-preview-alpine3.17, 8.0-preview-alpine | [Dockerfile](https://github.com/dotnet/dotnet-docker/blob/nightly/src/aspnet-composite/8.0/alpine3.17/arm32v7/Dockerfile) | Alpine 3.17 | ||
| 8.0.0-preview.4-jammy-arm32v7, 8.0-preview-jammy-arm32v7, 8.0.0-preview.4-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.4-jammy-chiseled-arm32v7, 8.0-preview-jammy-chiseled-arm32v7, 8.0.0-preview.4-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 | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,97 @@ | ||
| {{ | ||
| 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 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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("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")}}}}}} | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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 ^ | ||
|
|
@@ -19,15 +20,30 @@ | |
| when(ARGS["is-internal"], | ||
| VARIABLES[cat("runtime|", dotnetVersion, "|build-version")], | ||
| "$DOTNET_VERSION")) ^ | ||
| set aspnetVersionDir 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 aspnetVersionFile to when(isInternalStableBranding, | ||
| VARIABLES[cat("dotnet|", dotnetVersion, "|product-version")], | ||
| aspnetVersionDir) ^ | ||
| 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 aspnetUrl to cat(baseUrl, "/aspnetcore/Runtime/", aspnetVersionDir, "/aspnetcore-runtime-composite-", aspnetVersionFile, | ||
|
||
| 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 [ | ||
| [ | ||
|
|
@@ -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": aspnetUrl, | ||
| "sha": VARIABLES[join(["aspnet", 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" ^ | ||
|
|
@@ -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, | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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", new string[] { $"$DOTNET_BASE_URL/aspnetcore/Runtime/$VERSION_DIR/aspnetcore-runtime-$COMPOSITE_SUFFIX$VERSION_FILE$OPTIONAL_OS-{GetRuntimeSdkArchFormat()}.$ARCHIVE_EXT" } }, | ||
|
||
| { | ||
| "aspnet-runtime-targeting-pack", | ||
| new string[] | ||
|
|
@@ -194,6 +195,9 @@ public static IEnumerable<IDependencyUpdater> CreateUpdaters( | |
| } | ||
|
|
||
| string optionalOs = _os.Contains("rpm") ? string.Empty : $"-{_os}"; | ||
| string compositeSuffix = _dockerfileVersion.Major != 6.0 && _dockerfileVersion.Major != 7.0 && !_os.Contains("win") | ||
| ? "composite-; | ||
| : string.Empty; | ||
|
|
||
| // Each product name has one or more candidate URLs from which to retrieve the artifact. Multiple candidate URLs | ||
| // should be listed in priority order. Each subsequent URL listed is treated as a fallback. | ||
|
|
@@ -207,6 +211,7 @@ public static IEnumerable<IDependencyUpdater> CreateUpdaters( | |
| .Replace("$ARCHIVE_EXT", archiveExt) | ||
| .Replace("$VERSION_DIR", versionDir) | ||
| .Replace("$VERSION_FILE", versionFile) | ||
| .Replace("$COMPOSITE_SUFFIX", compositeSuffix) | ||
| .Replace("$OS", _os) | ||
| .Replace("$OPTIONAL_OS", optionalOs) | ||
| .Replace("$ARCH", _arch) | ||
|
|
||
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| <?xml version="1.0" encoding="utf-8"?> | ||
|
||
| <configuration> | ||
| <packageSources> | ||
| <clear /> | ||
| <add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" /> | ||
| <add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" /> | ||
| <add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" /> | ||
| <add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" /> | ||
| </packageSources> | ||
| </configuration> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,7 @@ | ||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||
|
|
||
| <PropertyGroup> | ||
| <TargetFramework>net7.0</TargetFramework> | ||
| <TargetFramework>net8.0</TargetFramework> | ||
|
||
| <Nullable>enable</Nullable> | ||
| <ImplicitUsings>enable</ImplicitUsings> | ||
| <UserSecretsId>57393389627611478466</UserSecretsId> | ||
|
|
||
There was a problem hiding this comment.
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
Aboutsection 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 runningeng\readme-templates\Get-GeneratedReadmes.ps1There was a problem hiding this comment.
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.