diff --git a/README.aspnet.md b/README.aspnet.md index fd759e8314..ba6ef2c1ec 100644 --- a/README.aspnet.md +++ b/README.aspnet.md @@ -174,6 +174,11 @@ Tags | Dockerfile | OS Version 11.0.0-rc.1-alpine3.24-extra-amd64, 11.0-preview-alpine3.24-extra-amd64, 11.0-preview-alpine-extra-amd64, 11.0.0-rc.1-alpine3.24-extra, 11.0-preview-alpine3.24-extra, 11.0-preview-alpine-extra | [Dockerfile](src/aspnet/11.0/alpine3.24-extra/amd64/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-composite-amd64, 11.0-preview-alpine3.24-composite-amd64, 11.0-preview-alpine-composite-amd64, 11.0.0-rc.1-alpine3.24-composite, 11.0-preview-alpine3.24-composite, 11.0-preview-alpine-composite | [Dockerfile](src/aspnet/11.0/alpine3.24-composite/amd64/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-composite-extra-amd64, 11.0-preview-alpine3.24-composite-extra-amd64, 11.0-preview-alpine-composite-extra-amd64, 11.0.0-rc.1-alpine3.24-composite-extra, 11.0-preview-alpine3.24-composite-extra, 11.0-preview-alpine-composite-extra | [Dockerfile](src/aspnet/11.0/alpine3.24-composite-extra/amd64/Dockerfile) | Alpine 3.24 +11.0.0-rc.1-azurelinux3.0-amd64, 11.0-preview-azurelinux3.0-amd64, 11.0.0-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-amd64, 11.0-preview-azurelinux3.0-distroless-amd64, 11.0.0-rc.1-azurelinux3.0-distroless, 11.0-preview-azurelinux3.0-distroless | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-extra-amd64, 11.0-preview-azurelinux3.0-distroless-extra-amd64, 11.0.0-rc.1-azurelinux3.0-distroless-extra, 11.0-preview-azurelinux3.0-distroless-extra | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-composite-amd64, 11.0-preview-azurelinux3.0-distroless-composite-amd64, 11.0.0-rc.1-azurelinux3.0-distroless-composite, 11.0-preview-azurelinux3.0-distroless-composite | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-composite-extra-amd64, 11.0-preview-azurelinux3.0-distroless-composite-extra-amd64, 11.0.0-rc.1-azurelinux3.0-distroless-composite-extra, 11.0-preview-azurelinux3.0-distroless-composite-extra | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile) | Azure Linux 3.0 11.0.0-rc.1-azurelinux4.0-amd64, 11.0-preview-azurelinux4.0-amd64, 11.0.0-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/aspnet/11.0/azurelinux4.0/amd64/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-amd64, 11.0-preview-azurelinux4.0-distroless-amd64, 11.0.0-rc.1-azurelinux4.0-distroless, 11.0-preview-azurelinux4.0-distroless | [Dockerfile](src/aspnet/11.0/azurelinux4.0-distroless/amd64/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-extra-amd64, 11.0-preview-azurelinux4.0-distroless-extra-amd64, 11.0.0-rc.1-azurelinux4.0-distroless-extra, 11.0-preview-azurelinux4.0-distroless-extra | [Dockerfile](src/aspnet/11.0/azurelinux4.0-distroless-extra/amd64/Dockerfile) | Azure Linux 4.0 @@ -269,6 +274,11 @@ Tags | Dockerfile | OS Version 11.0.0-rc.1-alpine3.24-extra-arm64v8, 11.0-preview-alpine3.24-extra-arm64v8, 11.0-preview-alpine-extra-arm64v8, 11.0.0-rc.1-alpine3.24-extra, 11.0-preview-alpine3.24-extra, 11.0-preview-alpine-extra | [Dockerfile](src/aspnet/11.0/alpine3.24-extra/arm64v8/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-composite-arm64v8, 11.0-preview-alpine3.24-composite-arm64v8, 11.0-preview-alpine-composite-arm64v8, 11.0.0-rc.1-alpine3.24-composite, 11.0-preview-alpine3.24-composite, 11.0-preview-alpine-composite | [Dockerfile](src/aspnet/11.0/alpine3.24-composite/arm64v8/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-composite-extra-arm64v8, 11.0-preview-alpine3.24-composite-extra-arm64v8, 11.0-preview-alpine-composite-extra-arm64v8, 11.0.0-rc.1-alpine3.24-composite-extra, 11.0-preview-alpine3.24-composite-extra, 11.0-preview-alpine-composite-extra | [Dockerfile](src/aspnet/11.0/alpine3.24-composite-extra/arm64v8/Dockerfile) | Alpine 3.24 +11.0.0-rc.1-azurelinux3.0-arm64v8, 11.0-preview-azurelinux3.0-arm64v8, 11.0.0-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-arm64v8, 11.0-preview-azurelinux3.0-distroless-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless, 11.0-preview-azurelinux3.0-distroless | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-extra-arm64v8, 11.0-preview-azurelinux3.0-distroless-extra-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless-extra, 11.0-preview-azurelinux3.0-distroless-extra | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-composite-arm64v8, 11.0-preview-azurelinux3.0-distroless-composite-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless-composite, 11.0-preview-azurelinux3.0-distroless-composite | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-composite-extra-arm64v8, 11.0-preview-azurelinux3.0-distroless-composite-extra-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless-composite-extra, 11.0-preview-azurelinux3.0-distroless-composite-extra | [Dockerfile](src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile) | Azure Linux 3.0 11.0.0-rc.1-azurelinux4.0-arm64v8, 11.0-preview-azurelinux4.0-arm64v8, 11.0.0-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/aspnet/11.0/azurelinux4.0/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-arm64v8, 11.0-preview-azurelinux4.0-distroless-arm64v8, 11.0.0-rc.1-azurelinux4.0-distroless, 11.0-preview-azurelinux4.0-distroless | [Dockerfile](src/aspnet/11.0/azurelinux4.0-distroless/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-extra-arm64v8, 11.0-preview-azurelinux4.0-distroless-extra-arm64v8, 11.0.0-rc.1-azurelinux4.0-distroless-extra, 11.0-preview-azurelinux4.0-distroless-extra | [Dockerfile](src/aspnet/11.0/azurelinux4.0-distroless-extra/arm64v8/Dockerfile) | Azure Linux 4.0 diff --git a/README.runtime-deps.md b/README.runtime-deps.md index 87385d6946..75dfd97c7c 100644 --- a/README.runtime-deps.md +++ b/README.runtime-deps.md @@ -122,6 +122,9 @@ Tags | Dockerfile | OS Version 11.0.0-rc.1-resolute-chiseled-extra-amd64, 11.0-preview-resolute-chiseled-extra-amd64, 11.0.0-rc.1-resolute-chiseled-extra, 11.0-preview-resolute-chiseled-extra | [Dockerfile](src/runtime-deps/11.0/resolute-chiseled-extra/amd64/Dockerfile) | Ubuntu 26.04 11.0.0-rc.1-alpine3.24-amd64, 11.0-preview-alpine3.24-amd64, 11.0-preview-alpine-amd64, 11.0.0-rc.1-alpine3.24, 11.0-preview-alpine3.24, 11.0-preview-alpine | [Dockerfile](src/runtime-deps/11.0/alpine3.24/amd64/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-extra-amd64, 11.0-preview-alpine3.24-extra-amd64, 11.0-preview-alpine-extra-amd64, 11.0.0-rc.1-alpine3.24-extra, 11.0-preview-alpine3.24-extra, 11.0-preview-alpine-extra | [Dockerfile](src/runtime-deps/11.0/alpine3.24-extra/amd64/Dockerfile) | Alpine 3.24 +11.0.0-rc.1-azurelinux3.0-amd64, 11.0-preview-azurelinux3.0-amd64, 11.0.0-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/runtime-deps/11.0/azurelinux3.0/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-amd64, 11.0-preview-azurelinux3.0-distroless-amd64, 11.0.0-rc.1-azurelinux3.0-distroless, 11.0-preview-azurelinux3.0-distroless | [Dockerfile](src/runtime-deps/11.0/azurelinux3.0-distroless/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-extra-amd64, 11.0-preview-azurelinux3.0-distroless-extra-amd64, 11.0.0-rc.1-azurelinux3.0-distroless-extra, 11.0-preview-azurelinux3.0-distroless-extra | [Dockerfile](src/runtime-deps/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile) | Azure Linux 3.0 11.0.0-rc.1-azurelinux4.0-amd64, 11.0-preview-azurelinux4.0-amd64, 11.0.0-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/runtime-deps/11.0/azurelinux4.0/amd64/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-amd64, 11.0-preview-azurelinux4.0-distroless-amd64, 11.0.0-rc.1-azurelinux4.0-distroless, 11.0-preview-azurelinux4.0-distroless | [Dockerfile](src/runtime-deps/11.0/azurelinux4.0-distroless/amd64/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-extra-amd64, 11.0-preview-azurelinux4.0-distroless-extra-amd64, 11.0.0-rc.1-azurelinux4.0-distroless-extra, 11.0-preview-azurelinux4.0-distroless-extra | [Dockerfile](src/runtime-deps/11.0/azurelinux4.0-distroless-extra/amd64/Dockerfile) | Azure Linux 4.0 @@ -181,6 +184,9 @@ Tags | Dockerfile | OS Version 11.0.0-rc.1-resolute-chiseled-extra-arm64v8, 11.0-preview-resolute-chiseled-extra-arm64v8, 11.0.0-rc.1-resolute-chiseled-extra, 11.0-preview-resolute-chiseled-extra | [Dockerfile](src/runtime-deps/11.0/resolute-chiseled-extra/arm64v8/Dockerfile) | Ubuntu 26.04 11.0.0-rc.1-alpine3.24-arm64v8, 11.0-preview-alpine3.24-arm64v8, 11.0-preview-alpine-arm64v8, 11.0.0-rc.1-alpine3.24, 11.0-preview-alpine3.24, 11.0-preview-alpine | [Dockerfile](src/runtime-deps/11.0/alpine3.24/arm64v8/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-extra-arm64v8, 11.0-preview-alpine3.24-extra-arm64v8, 11.0-preview-alpine-extra-arm64v8, 11.0.0-rc.1-alpine3.24-extra, 11.0-preview-alpine3.24-extra, 11.0-preview-alpine-extra | [Dockerfile](src/runtime-deps/11.0/alpine3.24-extra/arm64v8/Dockerfile) | Alpine 3.24 +11.0.0-rc.1-azurelinux3.0-arm64v8, 11.0-preview-azurelinux3.0-arm64v8, 11.0.0-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/runtime-deps/11.0/azurelinux3.0/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-arm64v8, 11.0-preview-azurelinux3.0-distroless-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless, 11.0-preview-azurelinux3.0-distroless | [Dockerfile](src/runtime-deps/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-extra-arm64v8, 11.0-preview-azurelinux3.0-distroless-extra-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless-extra, 11.0-preview-azurelinux3.0-distroless-extra | [Dockerfile](src/runtime-deps/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile) | Azure Linux 3.0 11.0.0-rc.1-azurelinux4.0-arm64v8, 11.0-preview-azurelinux4.0-arm64v8, 11.0.0-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/runtime-deps/11.0/azurelinux4.0/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-arm64v8, 11.0-preview-azurelinux4.0-distroless-arm64v8, 11.0.0-rc.1-azurelinux4.0-distroless, 11.0-preview-azurelinux4.0-distroless | [Dockerfile](src/runtime-deps/11.0/azurelinux4.0-distroless/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-extra-arm64v8, 11.0-preview-azurelinux4.0-distroless-extra-arm64v8, 11.0.0-rc.1-azurelinux4.0-distroless-extra, 11.0-preview-azurelinux4.0-distroless-extra | [Dockerfile](src/runtime-deps/11.0/azurelinux4.0-distroless-extra/arm64v8/Dockerfile) | Azure Linux 4.0 diff --git a/README.runtime.md b/README.runtime.md index 34f41ea454..953b7893a8 100644 --- a/README.runtime.md +++ b/README.runtime.md @@ -129,6 +129,9 @@ Tags | Dockerfile | OS Version 11.0.0-rc.1-resolute-chiseled-extra-amd64, 11.0-preview-resolute-chiseled-extra-amd64, 11.0.0-rc.1-resolute-chiseled-extra, 11.0-preview-resolute-chiseled-extra | [Dockerfile](src/runtime/11.0/resolute-chiseled-extra/amd64/Dockerfile) | Ubuntu 26.04 11.0.0-rc.1-alpine3.24-amd64, 11.0-preview-alpine3.24-amd64, 11.0-preview-alpine-amd64, 11.0.0-rc.1-alpine3.24, 11.0-preview-alpine3.24, 11.0-preview-alpine | [Dockerfile](src/runtime/11.0/alpine3.24/amd64/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-extra-amd64, 11.0-preview-alpine3.24-extra-amd64, 11.0-preview-alpine-extra-amd64, 11.0.0-rc.1-alpine3.24-extra, 11.0-preview-alpine3.24-extra, 11.0-preview-alpine-extra | [Dockerfile](src/runtime/11.0/alpine3.24-extra/amd64/Dockerfile) | Alpine 3.24 +11.0.0-rc.1-azurelinux3.0-amd64, 11.0-preview-azurelinux3.0-amd64, 11.0.0-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/runtime/11.0/azurelinux3.0/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-amd64, 11.0-preview-azurelinux3.0-distroless-amd64, 11.0.0-rc.1-azurelinux3.0-distroless, 11.0-preview-azurelinux3.0-distroless | [Dockerfile](src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-extra-amd64, 11.0-preview-azurelinux3.0-distroless-extra-amd64, 11.0.0-rc.1-azurelinux3.0-distroless-extra, 11.0-preview-azurelinux3.0-distroless-extra | [Dockerfile](src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile) | Azure Linux 3.0 11.0.0-rc.1-azurelinux4.0-amd64, 11.0-preview-azurelinux4.0-amd64, 11.0.0-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/runtime/11.0/azurelinux4.0/amd64/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-amd64, 11.0-preview-azurelinux4.0-distroless-amd64, 11.0.0-rc.1-azurelinux4.0-distroless, 11.0-preview-azurelinux4.0-distroless | [Dockerfile](src/runtime/11.0/azurelinux4.0-distroless/amd64/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-extra-amd64, 11.0-preview-azurelinux4.0-distroless-extra-amd64, 11.0.0-rc.1-azurelinux4.0-distroless-extra, 11.0-preview-azurelinux4.0-distroless-extra | [Dockerfile](src/runtime/11.0/azurelinux4.0-distroless-extra/amd64/Dockerfile) | Azure Linux 4.0 @@ -188,6 +191,9 @@ Tags | Dockerfile | OS Version 11.0.0-rc.1-resolute-chiseled-extra-arm64v8, 11.0-preview-resolute-chiseled-extra-arm64v8, 11.0.0-rc.1-resolute-chiseled-extra, 11.0-preview-resolute-chiseled-extra | [Dockerfile](src/runtime/11.0/resolute-chiseled-extra/arm64v8/Dockerfile) | Ubuntu 26.04 11.0.0-rc.1-alpine3.24-arm64v8, 11.0-preview-alpine3.24-arm64v8, 11.0-preview-alpine-arm64v8, 11.0.0-rc.1-alpine3.24, 11.0-preview-alpine3.24, 11.0-preview-alpine | [Dockerfile](src/runtime/11.0/alpine3.24/arm64v8/Dockerfile) | Alpine 3.24 11.0.0-rc.1-alpine3.24-extra-arm64v8, 11.0-preview-alpine3.24-extra-arm64v8, 11.0-preview-alpine-extra-arm64v8, 11.0.0-rc.1-alpine3.24-extra, 11.0-preview-alpine3.24-extra, 11.0-preview-alpine-extra | [Dockerfile](src/runtime/11.0/alpine3.24-extra/arm64v8/Dockerfile) | Alpine 3.24 +11.0.0-rc.1-azurelinux3.0-arm64v8, 11.0-preview-azurelinux3.0-arm64v8, 11.0.0-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-arm64v8, 11.0-preview-azurelinux3.0-distroless-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless, 11.0-preview-azurelinux3.0-distroless | [Dockerfile](src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.0-rc.1-azurelinux3.0-distroless-extra-arm64v8, 11.0-preview-azurelinux3.0-distroless-extra-arm64v8, 11.0.0-rc.1-azurelinux3.0-distroless-extra, 11.0-preview-azurelinux3.0-distroless-extra | [Dockerfile](src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile) | Azure Linux 3.0 11.0.0-rc.1-azurelinux4.0-arm64v8, 11.0-preview-azurelinux4.0-arm64v8, 11.0.0-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/runtime/11.0/azurelinux4.0/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-arm64v8, 11.0-preview-azurelinux4.0-distroless-arm64v8, 11.0.0-rc.1-azurelinux4.0-distroless, 11.0-preview-azurelinux4.0-distroless | [Dockerfile](src/runtime/11.0/azurelinux4.0-distroless/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.0-rc.1-azurelinux4.0-distroless-extra-arm64v8, 11.0-preview-azurelinux4.0-distroless-extra-arm64v8, 11.0.0-rc.1-azurelinux4.0-distroless-extra, 11.0-preview-azurelinux4.0-distroless-extra | [Dockerfile](src/runtime/11.0/azurelinux4.0-distroless-extra/arm64v8/Dockerfile) | Azure Linux 4.0 diff --git a/README.sdk.md b/README.sdk.md index c563857abe..ae45d02857 100644 --- a/README.sdk.md +++ b/README.sdk.md @@ -106,6 +106,8 @@ Tags | Dockerfile | OS Version 11.0.100-rc.1-resolute-aot-amd64, 11.0-preview-resolute-aot-amd64, 11.0.100-rc.1-resolute-aot, 11.0-preview-resolute-aot, 11.0.100-rc.1-aot, 11.0-preview-aot | [Dockerfile](src/sdk/11.0/resolute-aot/amd64/Dockerfile) | Ubuntu 26.04 11.0.100-rc.1-alpine3.24-amd64, 11.0-preview-alpine3.24-amd64, 11.0-preview-alpine-amd64, 11.0.100-rc.1-alpine3.24, 11.0-preview-alpine3.24, 11.0-preview-alpine | [Dockerfile](src/sdk/11.0/alpine3.24/amd64/Dockerfile) | Alpine 3.24 11.0.100-rc.1-alpine3.24-aot-amd64, 11.0-preview-alpine3.24-aot-amd64, 11.0-preview-alpine-aot-amd64, 11.0.100-rc.1-alpine3.24-aot, 11.0-preview-alpine3.24-aot, 11.0-preview-alpine-aot | [Dockerfile](src/sdk/11.0/alpine3.24-aot/amd64/Dockerfile) | Alpine 3.24 +11.0.100-rc.1-azurelinux3.0-amd64, 11.0-preview-azurelinux3.0-amd64, 11.0.100-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/sdk/11.0/azurelinux3.0/amd64/Dockerfile) | Azure Linux 3.0 +11.0.100-rc.1-azurelinux3.0-aot-amd64, 11.0-preview-azurelinux3.0-aot-amd64, 11.0.100-rc.1-azurelinux3.0-aot, 11.0-preview-azurelinux3.0-aot | [Dockerfile](src/sdk/11.0/azurelinux3.0-aot/amd64/Dockerfile) | Azure Linux 3.0 11.0.100-rc.1-azurelinux4.0-amd64, 11.0-preview-azurelinux4.0-amd64, 11.0.100-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/sdk/11.0/azurelinux4.0/amd64/Dockerfile) | Azure Linux 4.0 11.0.100-rc.1-azurelinux4.0-aot-amd64, 11.0-preview-azurelinux4.0-aot-amd64, 11.0.100-rc.1-azurelinux4.0-aot, 11.0-preview-azurelinux4.0-aot | [Dockerfile](src/sdk/11.0/azurelinux4.0-aot/amd64/Dockerfile) | Azure Linux 4.0 @@ -145,6 +147,8 @@ Tags | Dockerfile | OS Version 11.0.100-rc.1-resolute-aot-arm64v8, 11.0-preview-resolute-aot-arm64v8, 11.0.100-rc.1-resolute-aot, 11.0-preview-resolute-aot, 11.0.100-rc.1-aot, 11.0-preview-aot | [Dockerfile](src/sdk/11.0/resolute-aot/arm64v8/Dockerfile) | Ubuntu 26.04 11.0.100-rc.1-alpine3.24-arm64v8, 11.0-preview-alpine3.24-arm64v8, 11.0-preview-alpine-arm64v8, 11.0.100-rc.1-alpine3.24, 11.0-preview-alpine3.24, 11.0-preview-alpine | [Dockerfile](src/sdk/11.0/alpine3.24/arm64v8/Dockerfile) | Alpine 3.24 11.0.100-rc.1-alpine3.24-aot-arm64v8, 11.0-preview-alpine3.24-aot-arm64v8, 11.0-preview-alpine-aot-arm64v8, 11.0.100-rc.1-alpine3.24-aot, 11.0-preview-alpine3.24-aot, 11.0-preview-alpine-aot | [Dockerfile](src/sdk/11.0/alpine3.24-aot/arm64v8/Dockerfile) | Alpine 3.24 +11.0.100-rc.1-azurelinux3.0-arm64v8, 11.0-preview-azurelinux3.0-arm64v8, 11.0.100-rc.1-azurelinux3.0, 11.0-preview-azurelinux3.0 | [Dockerfile](src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile) | Azure Linux 3.0 +11.0.100-rc.1-azurelinux3.0-aot-arm64v8, 11.0-preview-azurelinux3.0-aot-arm64v8, 11.0.100-rc.1-azurelinux3.0-aot, 11.0-preview-azurelinux3.0-aot | [Dockerfile](src/sdk/11.0/azurelinux3.0-aot/arm64v8/Dockerfile) | Azure Linux 3.0 11.0.100-rc.1-azurelinux4.0-arm64v8, 11.0-preview-azurelinux4.0-arm64v8, 11.0.100-rc.1-azurelinux4.0, 11.0-preview-azurelinux4.0 | [Dockerfile](src/sdk/11.0/azurelinux4.0/arm64v8/Dockerfile) | Azure Linux 4.0 11.0.100-rc.1-azurelinux4.0-aot-arm64v8, 11.0-preview-azurelinux4.0-aot-arm64v8, 11.0.100-rc.1-azurelinux4.0-aot, 11.0-preview-azurelinux4.0-aot | [Dockerfile](src/sdk/11.0/azurelinux4.0-aot/arm64v8/Dockerfile) | Azure Linux 4.0 diff --git a/eng/mcr-tags-metadata-templates/aspnet-tags.yml b/eng/mcr-tags-metadata-templates/aspnet-tags.yml index 34cb4bb549..442ddc2845 100644 --- a/eng/mcr-tags-metadata-templates/aspnet-tags.yml +++ b/eng/mcr-tags-metadata-templates/aspnet-tags.yml @@ -8,6 +8,11 @@ $(McrTagsYmlTagGroup:11.0-preview-alpine3.24|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24-extra|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24-composite|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24-composite-extra|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless-extra|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless-composite|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless-composite-extra|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-distroless|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-distroless-extra|.NET 11 Preview Tags) diff --git a/eng/mcr-tags-metadata-templates/runtime-deps-tags.yml b/eng/mcr-tags-metadata-templates/runtime-deps-tags.yml index 696bbfb939..b317c12dde 100644 --- a/eng/mcr-tags-metadata-templates/runtime-deps-tags.yml +++ b/eng/mcr-tags-metadata-templates/runtime-deps-tags.yml @@ -4,6 +4,9 @@ $(McrTagsYmlTagGroup:11.0-preview-resolute-chiseled|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-resolute-chiseled-extra|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24-extra|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless-extra|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-distroless|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-distroless-extra|.NET 11 Preview Tags) diff --git a/eng/mcr-tags-metadata-templates/runtime-tags.yml b/eng/mcr-tags-metadata-templates/runtime-tags.yml index a87ada2033..626c547755 100644 --- a/eng/mcr-tags-metadata-templates/runtime-tags.yml +++ b/eng/mcr-tags-metadata-templates/runtime-tags.yml @@ -4,6 +4,9 @@ $(McrTagsYmlTagGroup:11.0-preview-resolute-chiseled|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-resolute-chiseled-extra|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24-extra|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-distroless-extra|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-distroless|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-distroless-extra|.NET 11 Preview Tags) diff --git a/eng/mcr-tags-metadata-templates/sdk-tags.yml b/eng/mcr-tags-metadata-templates/sdk-tags.yml index 483b452da3..6410c30d46 100644 --- a/eng/mcr-tags-metadata-templates/sdk-tags.yml +++ b/eng/mcr-tags-metadata-templates/sdk-tags.yml @@ -3,6 +3,8 @@ $(McrTagsYmlTagGroup:11.0-preview-resolute|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-resolute-aot|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-alpine3.24-aot|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0|.NET 11 Preview Tags) +$(McrTagsYmlTagGroup:11.0-preview-azurelinux3.0-aot|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-azurelinux4.0-aot|.NET 11 Preview Tags) $(McrTagsYmlTagGroup:11.0-preview-nanoserver-ltsc2025|.NET 11 Preview Tags) diff --git a/manifest.json b/manifest.json index 48184e63ec..5aa7b7d2d8 100644 --- a/manifest.json +++ b/manifest.json @@ -2645,6 +2645,135 @@ } ] }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0": {} + }, + "platforms": [ + { + "dockerfile": "src/runtime-deps/11.0/azurelinux3.0/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/runtime-deps/Dockerfile", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-amd64": {} + } + }, + { + "architecture": "arm64", + "dockerfile": "src/runtime-deps/11.0/azurelinux3.0/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/runtime-deps/Dockerfile", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-arm64v8": {} + }, + "variant": "v8" + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless": {} + }, + "platforms": [ + { + "dockerfile": "src/runtime-deps/11.0/azurelinux3.0-distroless/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/runtime-deps/Dockerfile.distroless-azurelinux", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "dockerfile": "src/runtime-deps/11.0/azurelinux3.0-distroless/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/runtime-deps/Dockerfile.distroless-azurelinux", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra": {} + }, + "platforms": [ + { + "dockerfile": "src/runtime-deps/11.0/azurelinux3.0-distroless-extra/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/runtime-deps/Dockerfile.distroless-azurelinux.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "dockerfile": "src/runtime-deps/11.0/azurelinux3.0-distroless-extra/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/runtime-deps/Dockerfile.distroless-azurelinux.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, { "productVersion": "$(dotnet|11.0|product-version)", "sharedTags": { @@ -6018,6 +6147,167 @@ } ] }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/runtime/11.0/azurelinux3.0/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-amd64": {} + } + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/runtime/11.0/azurelinux3.0/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-arm64v8": {} + }, + "variant": "v8" + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/runtime/11.0/azurelinux3.0-distroless/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/runtime/11.0/azurelinux3.0-distroless/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/runtime/11.0/azurelinux3.0-distroless-extra/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile.linux.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:runtime):$(dotnet|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/runtime/Dockerfile.linux.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:runtime):$(dotnet|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, { "productVersion": "$(dotnet|11.0|product-version)", "sharedTags": { @@ -11510,21 +11800,21 @@ { "productVersion": "$(dotnet|11.0|product-version)", "sharedTags": { - "$(dotnet|11.0|fixed-tag)-azurelinux4.0": {}, - "$(dotnet|11.0|minor-tag)-azurelinux4.0": {} + "$(dotnet|11.0|fixed-tag)-azurelinux3.0": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0": {} }, "platforms": [ { "buildArgs": { "REPO": "$(Repo:runtime)" }, - "dockerfile": "src/aspnet/11.0/azurelinux4.0/amd64", + "dockerfile": "src/aspnet/11.0/azurelinux3.0/amd64", "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux", "os": "linux", - "osVersion": "azurelinux4.0", + "osVersion": "azurelinux3.0", "tags": { - "$(dotnet|11.0|fixed-tag)-azurelinux4.0-amd64": {}, - "$(dotnet|11.0|minor-tag)-azurelinux4.0-amd64": {} + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-amd64": {} } }, { @@ -11532,26 +11822,339 @@ "buildArgs": { "REPO": "$(Repo:runtime)" }, - "dockerfile": "src/aspnet/11.0/azurelinux4.0/arm64v8", + "dockerfile": "src/aspnet/11.0/azurelinux3.0/arm64v8", "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux", "os": "linux", - "osVersion": "azurelinux4.0", + "osVersion": "azurelinux3.0", "tags": { - "$(dotnet|11.0|fixed-tag)-azurelinux4.0-arm64v8": {}, - "$(dotnet|11.0|minor-tag)-azurelinux4.0-arm64v8": {} + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-arm64v8": {} }, - "variant": "v8", - "customBuildLegGroups": [ - { - "name": "pr-build", - "type": "Supplemental", - "dependencies": [ - "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux4.0-arm64v8" - ] - }, - { - "name": "test-dependencies", - "type": "Integral", + "variant": "v8" + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-extra-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-extra-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-composite": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-composite": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux-composite", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-composite-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-composite-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux-composite", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-composite-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-composite-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-composite-extra": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-composite-extra": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux-composite.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-composite-extra-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-composite-extra-amd64": {} + }, + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-amd64" + ] + } + ] + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime-deps)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux-composite.extra", + "os": "linux", + "osVersion": "azurelinux3.0-distroless", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux3.0-distroless-composite-extra-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux3.0-distroless-composite-extra-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8" + ] + } + ] + } + ] + }, + { + "productVersion": "$(dotnet|11.0|product-version)", + "sharedTags": { + "$(dotnet|11.0|fixed-tag)-azurelinux4.0": {}, + "$(dotnet|11.0|minor-tag)-azurelinux4.0": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux4.0/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux4.0", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux4.0-amd64": {}, + "$(dotnet|11.0|minor-tag)-azurelinux4.0-amd64": {} + } + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:runtime)" + }, + "dockerfile": "src/aspnet/11.0/azurelinux4.0/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/aspnet/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux4.0", + "tags": { + "$(dotnet|11.0|fixed-tag)-azurelinux4.0-arm64v8": {}, + "$(dotnet|11.0|minor-tag)-azurelinux4.0-arm64v8": {} + }, + "variant": "v8", + "customBuildLegGroups": [ + { + "name": "pr-build", + "type": "Supplemental", + "dependencies": [ + "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux4.0-arm64v8" + ] + }, + { + "name": "test-dependencies", + "type": "Integral", "dependencies": [ "$(Repo:sdk):$(sdk|11.0|minor-tag)-azurelinux4.0-arm64v8" ] @@ -13762,6 +14365,80 @@ } ] }, + { + "productVersion": "$(sdk|11.0|product-version)", + "sharedTags": { + "$(sdk|11.0|fixed-tag)-azurelinux3.0": {}, + "$(sdk|11.0|minor-tag)-azurelinux3.0": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:aspnet)" + }, + "dockerfile": "src/sdk/11.0/azurelinux3.0/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/sdk/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(sdk|11.0|fixed-tag)-azurelinux3.0-amd64": {}, + "$(sdk|11.0|minor-tag)-azurelinux3.0-amd64": {} + } + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:aspnet)" + }, + "dockerfile": "src/sdk/11.0/azurelinux3.0/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/sdk/Dockerfile.linux", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(sdk|11.0|fixed-tag)-azurelinux3.0-arm64v8": {}, + "$(sdk|11.0|minor-tag)-azurelinux3.0-arm64v8": {} + }, + "variant": "v8" + } + ] + }, + { + "productVersion": "$(sdk|11.0|product-version)", + "sharedTags": { + "$(sdk|11.0|fixed-tag)-azurelinux3.0-aot": {}, + "$(sdk|11.0|minor-tag)-azurelinux3.0-aot": {} + }, + "platforms": [ + { + "buildArgs": { + "REPO": "$(Repo:sdk)" + }, + "dockerfile": "src/sdk/11.0/azurelinux3.0-aot/amd64", + "dockerfileTemplate": "eng/dockerfile-templates/sdk/Dockerfile.linux.aot", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(sdk|11.0|fixed-tag)-azurelinux3.0-aot-amd64": {}, + "$(sdk|11.0|minor-tag)-azurelinux3.0-aot-amd64": {} + } + }, + { + "architecture": "arm64", + "buildArgs": { + "REPO": "$(Repo:sdk)" + }, + "dockerfile": "src/sdk/11.0/azurelinux3.0-aot/arm64v8", + "dockerfileTemplate": "eng/dockerfile-templates/sdk/Dockerfile.linux.aot", + "os": "linux", + "osVersion": "azurelinux3.0", + "tags": { + "$(sdk|11.0|fixed-tag)-azurelinux3.0-aot-arm64v8": {}, + "$(sdk|11.0|minor-tag)-azurelinux3.0-aot-arm64v8": {} + }, + "variant": "v8" + } + ] + }, { "productVersion": "$(sdk|11.0|product-version)", "sharedTags": { diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile new file mode 100644 index 0000000000..5789ec0bd8 --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/amd64/Dockerfile @@ -0,0 +1,41 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=11.0.0-rc.1.26411.119 \ + # ASP.NET Core version + ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile new file mode 100644 index 0000000000..3c5992f7a2 --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite-extra/arm64v8/Dockerfile @@ -0,0 +1,41 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=11.0.0-rc.1.26411.119 \ + # ASP.NET Core version + ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile new file mode 100644 index 0000000000..5fb07fd18a --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite/amd64/Dockerfile @@ -0,0 +1,41 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=11.0.0-rc.1.26411.119 \ + # ASP.NET Core version + ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile new file mode 100644 index 0000000000..89e13533d5 --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless-composite/arm64v8/Dockerfile @@ -0,0 +1,41 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=11.0.0-rc.1.26411.119 \ + # ASP.NET Core version + ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile new file mode 100644 index 0000000000..7896c88d7a --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile new file mode 100644 index 0000000000..fd84ec4afd --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile new file mode 100644 index 0000000000..bbb58a69ff --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless/amd64/Dockerfile @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile new file mode 100644 index 0000000000..a144abab75 --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile b/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile new file mode 100644 index 0000000000..24fc37cc11 --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0/amd64/Dockerfile @@ -0,0 +1,29 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-amd64 AS installer + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile new file mode 100644 index 0000000000..90d32c683a --- /dev/null +++ b/src/aspnet/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -0,0 +1,29 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-arm64v8 AS installer + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/src/runtime-deps/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile b/src/runtime-deps/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile new file mode 100644 index 0000000000..b3aa352eba --- /dev/null +++ b/src/runtime-deps/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/src/runtime-deps/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile b/src/runtime-deps/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile new file mode 100644 index 0000000000..b3aa352eba --- /dev/null +++ b/src/runtime-deps/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/src/runtime-deps/11.0/azurelinux3.0-distroless/amd64/Dockerfile b/src/runtime-deps/11.0/azurelinux3.0-distroless/amd64/Dockerfile new file mode 100644 index 0000000000..94daad8657 --- /dev/null +++ b/src/runtime-deps/11.0/azurelinux3.0-distroless/amd64/Dockerfile @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/src/runtime-deps/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile b/src/runtime-deps/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile new file mode 100644 index 0000000000..94daad8657 --- /dev/null +++ b/src/runtime-deps/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/src/runtime-deps/11.0/azurelinux3.0/amd64/Dockerfile b/src/runtime-deps/11.0/azurelinux3.0/amd64/Dockerfile new file mode 100644 index 0000000000..4adeda9e8f --- /dev/null +++ b/src/runtime-deps/11.0/azurelinux3.0/amd64/Dockerfile @@ -0,0 +1,36 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd --no-log-init \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all diff --git a/src/runtime-deps/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/runtime-deps/11.0/azurelinux3.0/arm64v8/Dockerfile new file mode 100644 index 0000000000..4adeda9e8f --- /dev/null +++ b/src/runtime-deps/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -0,0 +1,36 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd --no-log-init \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all diff --git a/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile new file mode 100644 index 0000000000..92edfa6aa8 --- /dev/null +++ b/src/runtime/11.0/azurelinux3.0-distroless-extra/amd64/Dockerfile @@ -0,0 +1,38 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile new file mode 100644 index 0000000000..a62cb5f84b --- /dev/null +++ b/src/runtime/11.0/azurelinux3.0-distroless-extra/arm64v8/Dockerfile @@ -0,0 +1,38 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile new file mode 100644 index 0000000000..a8eef96ffa --- /dev/null +++ b/src/runtime/11.0/azurelinux3.0-distroless/amd64/Dockerfile @@ -0,0 +1,38 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile b/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile new file mode 100644 index 0000000000..8613548e2d --- /dev/null +++ b/src/runtime/11.0/azurelinux3.0-distroless/arm64v8/Dockerfile @@ -0,0 +1,38 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-distroless-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile b/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile new file mode 100644 index 0000000000..5c14e3d973 --- /dev/null +++ b/src/runtime/11.0/azurelinux3.0/amd64/Dockerfile @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-amd64 AS installer + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-x64.tar.gz --directory /dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 + + +# .NET runtime image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile new file mode 100644 index 0000000000..308cea9ae0 --- /dev/null +++ b/src/runtime/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-arm64v8 AS installer + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=11.0.0-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-arm64.tar.gz --directory /dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 + + +# .NET runtime image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=11.0.0-rc.1.26411.119 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/src/sdk/11.0/azurelinux3.0-aot/amd64/Dockerfile b/src/sdk/11.0/azurelinux3.0-aot/amd64/Dockerfile new file mode 100644 index 0000000000..f7bbf7e291 --- /dev/null +++ b/src/sdk/11.0/azurelinux3.0-aot/amd64/Dockerfile @@ -0,0 +1,9 @@ +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:11.0.100-rc.1-azurelinux3.0-amd64 + +RUN tdnf install -y \ + binutils \ + gcc \ + glibc-devel \ + zlib-devel \ + && tdnf clean all diff --git a/src/sdk/11.0/azurelinux3.0-aot/arm64v8/Dockerfile b/src/sdk/11.0/azurelinux3.0-aot/arm64v8/Dockerfile new file mode 100644 index 0000000000..dc36e372cb --- /dev/null +++ b/src/sdk/11.0/azurelinux3.0-aot/arm64v8/Dockerfile @@ -0,0 +1,9 @@ +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:11.0.100-rc.1-azurelinux3.0-arm64v8 + +RUN tdnf install -y \ + binutils \ + gcc \ + glibc-devel \ + zlib-devel \ + && tdnf clean all diff --git a/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile b/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile new file mode 100644 index 0000000000..3e349fd438 --- /dev/null +++ b/src/sdk/11.0/azurelinux3.0/amd64/Dockerfile @@ -0,0 +1,64 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-amd64 AS installer + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN dotnet_sdk_version=11.0.100-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512) dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz --directory /dotnet ./dnx ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm \ + dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \ + dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512 + + +# .NET SDK image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=11.0.100-rc.1.26411.119 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Azure-Linux-3.0 + +RUN tdnf install -y \ + git \ + libgcc-atomic \ + tar \ + && tdnf clean all + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dnx /usr/bin/dnx \ + # Trigger first run experience by running arbitrary cmd + && dotnet help + +# Install PowerShell global tool +RUN powershell_version=7.7.0-preview.2 \ + && curl --fail --show-error --location --output PowerShell.Linux.x64.$powershell_version.nupkg https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.x64.$powershell_version.nupkg \ + && powershell_sha512='0bfdb2cb425e9dc45ce824746b9c686e0cfebe76e02918c3e09663cfb6d7c8a1fb9a8f983b61a30627ab5c48001e5e778ce30e977ce246bf6f48ac09f550bd6f' \ + && echo "$powershell_sha512 PowerShell.Linux.x64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir --parents /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.x64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.x64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + && chmod 755 /usr/share/powershell/.store/powershell.linux.x64/$powershell_version/powershell.linux.x64/$powershell_version/tools/*/any/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile b/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile new file mode 100644 index 0000000000..cda8427d70 --- /dev/null +++ b/src/sdk/11.0/azurelinux3.0/arm64v8/Dockerfile @@ -0,0 +1,64 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-arm64v8 AS installer + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN dotnet_sdk_version=11.0.100-rc.1.26411.119 \ + && curl --fail --show-error --location \ + --remote-name https://ci.dot.net/public/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz \ + --remote-name https://ci.dot.net/public-checksums/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512) dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz --directory /dotnet ./dnx ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm \ + dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz \ + dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512 + + +# .NET SDK image +FROM $REPO:11.0.0-rc.1-azurelinux3.0-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=11.0.100-rc.1.26411.119 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Azure-Linux-3.0-arm64 + +RUN tdnf install -y \ + git \ + libgcc-atomic \ + tar \ + && tdnf clean all + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dnx /usr/bin/dnx \ + # Trigger first run experience by running arbitrary cmd + && dotnet help + +# Install PowerShell global tool +RUN powershell_version=7.7.0-preview.2 \ + && curl --fail --show-error --location --output PowerShell.Linux.arm64.$powershell_version.nupkg https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm64.$powershell_version.nupkg \ + && powershell_sha512='4ea0c5fac453a9c1b3c5800acda1319c9db2df4c6e2dfa40c08fbb169c32def3e4688c5b89473fcdb4b218091a1f3836749fd59d8ee94d39f2c96e8761c08c94' \ + && echo "$powershell_sha512 PowerShell.Linux.arm64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir --parents /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + && chmod 755 /usr/share/powershell/.store/powershell.linux.arm64/$powershell_version/powershell.linux.arm64/$powershell_version/tools/*/any/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..d5dfad3088 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..c44ba14e88 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,31 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..7903185595 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt @@ -0,0 +1,33 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..5bf3e8670b --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,33 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..a1242a0b86 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-amd64-Dockerfile.approved.txt @@ -0,0 +1,43 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..a2b9dca9fa --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,43 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-extra-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-extra-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..8342b60432 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-extra-amd64-Dockerfile.approved.txt @@ -0,0 +1,43 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-extra-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-extra-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..c3128df0d3 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-composite-extra-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,43 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Composite Runtime +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-composite-$aspnetcore_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# ASP.NET Composite Image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +ENV \ + # .NET Runtime version + DOTNET_VERSION=0.0.0 \ + # ASP.NET Core version + ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..9e473c85ca --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt @@ -0,0 +1,33 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..55647a6beb --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/aspnet-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,33 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve ASP.NET Core +RUN aspnetcore_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512) aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz --directory /dotnet ./shared/Microsoft.AspNetCore.App \ + && rm \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz \ + aspnetcore-runtime-$aspnetcore_version-linux-arm64.tar.gz.sha512 + + +# ASP.NET Core image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +# ASP.NET Core version +ENV ASPNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..1661f6e865 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt @@ -0,0 +1,33 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-x64.tar.gz --directory /dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..561daf3a1a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,33 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-arm64.tar.gz --directory /dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..c0eb0dfd5b --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..64f97a946d --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..7b89b776aa --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-x64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-x64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-amd64 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..660a144524 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,40 @@ +ARG REPO=mcr.microsoft.com/dotnet/runtime-deps + +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + ca-certificates \ + gzip \ + tar \ + && tdnf clean all + +# Retrieve .NET Runtime +RUN dotnet_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512) dotnet-runtime-$dotnet_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /usr/share/dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-runtime-$dotnet_version-linux-arm64.tar.gz --directory /usr/share/dotnet \ + && rm \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz \ + dotnet-runtime-$dotnet_version-linux-arm64.tar.gz.sha512 + +RUN mkdir /dotnet-symlink \ + && ln -s /usr/share/dotnet/dotnet /dotnet-symlink/dotnet + + +# .NET runtime image +FROM $REPO:0.0.0-azurelinux3.0-distroless-extra-arm64v8 + +# .NET Runtime version +ENV DOTNET_VERSION=0.0.0 + +COPY --from=installer ["/usr/share/dotnet", "/usr/share/dotnet"] +COPY --from=installer ["/dotnet-symlink", "/usr/bin"] + +ENTRYPOINT ["/usr/bin/dotnet"] +CMD ["--info"] diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..4adeda9e8f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt @@ -0,0 +1,36 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd --no-log-init \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..4adeda9e8f --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,36 @@ +FROM mcr.microsoft.com/azurelinux/base/core:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +RUN tdnf install -y \ + ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all + +# Create a non-root user and group +RUN tdnf install -y \ + shadow-utils \ + && groupadd \ + --gid=$APP_UID \ + app \ + && useradd --no-log-init \ + --uid=$APP_UID \ + --gid=$APP_UID \ + --create-home \ + app \ + && tdnf autoremove -y \ + shadow-utils \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..94daad8657 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-amd64-Dockerfile.approved.txt @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..94daad8657 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + libgcc \ + libstdc++ \ + openssl-libs \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true \ + # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..b3aa352eba --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-extra-amd64-Dockerfile.approved.txt @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..b3aa352eba --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/runtime-deps-11.0-azurelinux3.0-distroless-extra-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,73 @@ +# Installer image +FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS installer + +RUN tdnf install -y \ + gawk \ + shadow-utils \ + && tdnf clean all + +# Install .NET's dependencies into a staging location +RUN mkdir /staging \ + && tdnf install -y --releasever=3.0 --installroot /staging \ + prebuilt-ca-certificates \ + \ + # .NET dependencies + glibc \ + icu \ + libgcc \ + libstdc++ \ + openssl-libs \ + tzdata \ + && tdnf clean all --releasever=3.0 --installroot /staging + +# Generate RPM manifest file by appending to the original manifest file from base distroless image +COPY --from=mcr.microsoft.com/azurelinux/distroless/minimal:3.0 /var/lib/rpmmanifest/container-manifest-2 /tmp/rpmmanifest +RUN tmpManifestPath="/tmp/rpmmanifest" \ + && rpm --query --all --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME}\t%{BUILDTIME}\t%{VENDOR}\t%{EPOCH}\t%{SIZE}\t%{ARCH}\t%{EPOCHNUM}\t%{SOURCERPM}\n" --root /staging | grep -v gpg-pubkey >> $tmpManifestPath \ + && mkdir --parents /staging/var/lib/rpmmanifest \ + # Remove duplicates that match on the first field (package name) + && tac $tmpManifestPath | gawk '!x[$1]++' | sort > /staging/var/lib/rpmmanifest/container-manifest-2 + +# Create a non-root user and group +RUN groupadd \ + --gid=1654 \ + app \ + && useradd --no-log-init \ + --uid=1654 \ + --gid=1654 \ + --shell /bin/false \ + --create-home \ + app \ + && install --directory --mode 0755 --owner 1654 --group 1654 "/staging/home/app" \ + && rootOrAppRegex='^\(root\|app\):' \ + && cat /etc/passwd | grep $rootOrAppRegex > "/staging/etc/passwd" \ + && cat /etc/group | grep $rootOrAppRegex > "/staging/etc/group" + +# Clean up staging +RUN rm -rf \ + /staging/etc/tdnf \ + /staging/run/* \ + /staging/var/cache/tdnf \ + /staging/var/lib/rpm \ + /staging/usr/share/doc \ + /staging/usr/share/man \ + && find /staging/var/log -type f -size +0 -delete + + +# .NET runtime-deps image +FROM mcr.microsoft.com/azurelinux/distroless/minimal:3.0 + +ENV \ + # UID of the non-root user 'app' + APP_UID=1654 \ + # Configure web servers to bind to port 8080 when present + ASPNETCORE_HTTP_PORTS=8080 \ + # Enable detection of running in a container + DOTNET_RUNNING_IN_CONTAINER=true + +COPY --from=installer /staging/ / + +# Workaround for https://github.com/moby/moby/issues/38710 +COPY --from=installer --chown=1654:1654 /staging/home/app /home/app + +USER $APP_UID diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..095836e69a --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-amd64-Dockerfile.approved.txt @@ -0,0 +1,66 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-amd64 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN dotnet_sdk_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512 \ + && echo "$(cat dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512) dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz --directory /dotnet ./dnx ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm \ + dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz \ + dotnet-sdk-$dotnet_sdk_version-linux-x64.tar.gz.sha512 + + +# .NET SDK image +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Azure-Linux-3.0 + +RUN tdnf install -y \ + git \ + libgcc-atomic \ + tar \ + && tdnf clean all + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dnx /usr/bin/dnx \ + # Trigger first run experience by running arbitrary cmd + && dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl --fail --show-error --location --output PowerShell.Linux.x64.$powershell_version.nupkg https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.x64.$powershell_version.nupkg \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.x64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir --parents /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.x64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.x64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + && chmod 755 /usr/share/powershell/.store/powershell.linux.x64/$powershell_version/powershell.linux.x64/$powershell_version/tools/*/any/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-aot-amd64-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-aot-amd64-Dockerfile.approved.txt new file mode 100644 index 0000000000..a1c8544cd0 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-aot-amd64-Dockerfile.approved.txt @@ -0,0 +1,9 @@ +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-azurelinux3.0-amd64 + +RUN tdnf install -y \ + binutils \ + gcc \ + glibc-devel \ + zlib-devel \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-aot-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-aot-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..04105723a9 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-aot-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,9 @@ +ARG REPO=mcr.microsoft.com/dotnet/sdk +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +RUN tdnf install -y \ + binutils \ + gcc \ + glibc-devel \ + zlib-devel \ + && tdnf clean all diff --git a/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt new file mode 100644 index 0000000000..2c2126ffbc --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/Baselines/GeneratedArtifactTests/VerifyInternalDockerfilesOutput/sdk-11.0-azurelinux3.0-arm64v8-Dockerfile.approved.txt @@ -0,0 +1,66 @@ +ARG REPO=mcr.microsoft.com/dotnet/aspnet +# Installer image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 AS installer + +ARG ACCESSTOKEN + +RUN tdnf install -y \ + tar \ + && tdnf clean all + +# Install .NET SDK +RUN dotnet_sdk_version=0.0.0 \ + && curl --header "Authorization: Bearer $ACCESSTOKEN" --header "x-ms-version: 2017-11-09" --fail --show-error --location \ + --remote-name https://dotnetstage.blob.core.windows.net/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz \ + --remote-name https://dotnetstage.blob.core.windows.net/Sdk/$dotnet_sdk_version/dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512 \ + && echo "$(cat dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512) dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz" | sha512sum -c - \ + && mkdir --parents /dotnet \ + && tar --gzip --extract --no-same-owner --file dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz --directory /dotnet ./dnx ./packs ./sdk ./sdk-manifests ./templates ./LICENSE.txt ./ThirdPartyNotices.txt \ + && rm \ + dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz \ + dotnet-sdk-$dotnet_sdk_version-linux-arm64.tar.gz.sha512 + + +# .NET SDK image +FROM $REPO:0.0.0-azurelinux3.0-arm64v8 + +ENV \ + # Do not generate certificate + DOTNET_GENERATE_ASPNET_CERTIFICATE=false \ + # Do not show first run text + DOTNET_NOLOGO=true \ + # SDK version + DOTNET_SDK_VERSION=0.0.0 \ + # Enable correct mode for dotnet watch (only mode supported in a container) + DOTNET_USE_POLLING_FILE_WATCHER=true \ + # Skip extraction of XML docs - generally not useful within an image/container - helps performance + NUGET_XMLDOC_MODE=skip \ + # PowerShell telemetry for docker image usage + POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Azure-Linux-3.0-arm64 + +RUN tdnf install -y \ + git \ + libgcc-atomic \ + tar \ + && tdnf clean all + +COPY --from=installer ["/dotnet", "/usr/share/dotnet"] + +RUN ln -s /usr/share/dotnet/dnx /usr/bin/dnx \ + # Trigger first run experience by running arbitrary cmd + && dotnet help + +# Install PowerShell global tool +RUN powershell_version=0.0.0 \ + && curl --fail --show-error --location --output PowerShell.Linux.arm64.$powershell_version.nupkg https://powershellinfraartifacts-gkhedzdeaghdezhr.z01.azurefd.net/tool/$powershell_version/PowerShell.Linux.arm64.$powershell_version.nupkg \ + && powershell_sha512='{sha512_placeholder}' \ + && echo "$powershell_sha512 PowerShell.Linux.arm64.$powershell_version.nupkg" | sha512sum -c - \ + && mkdir --parents /usr/share/powershell \ + && dotnet tool install --add-source / --tool-path /usr/share/powershell --version $powershell_version PowerShell.Linux.arm64 \ + && dotnet nuget locals all --clear \ + && rm PowerShell.Linux.arm64.$powershell_version.nupkg \ + && ln -s /usr/share/powershell/pwsh /usr/bin/pwsh \ + && chmod 755 /usr/share/powershell/pwsh \ + && chmod 755 /usr/share/powershell/.store/powershell.linux.arm64/$powershell_version/powershell.linux.arm64/$powershell_version/tools/*/any/pwsh \ + # To reduce image size, remove the copy nupkg that nuget keeps. + && find /usr/share/powershell -print | grep -i '.*[.]nupkg$' | xargs rm diff --git a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs index 28cc26c2ab..ad0f91200d 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/TestData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/TestData.cs @@ -364,26 +364,43 @@ public static class TestData ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.Alpine324, Arch = Arch.Amd64, SdkOS = OS.Alpine324, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30, Arch = Arch.Amd64 }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40, Arch = Arch.Amd64 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30 }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux40 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux40, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux40, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux30, + ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Amd64, SdkOS = OS.AzureLinux40, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine324 }, + new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux40Distroless, SdkOS = OS.AzureLinux40 }, new() { Version = V11_0, Arch = Arch.Amd64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.ResoluteChiseled, SdkOS = OS.Resolute }, // .NET 11 Linux Arm64 + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30, Arch = Arch.Arm64 }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40, Arch = Arch.Arm64 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30 }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux40 }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux40, ImageVariant = DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Runtime_Deps | DotNetImageRepo.Runtime | DotNetImageRepo.Aspnet }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux40, ImageVariant = DotNetImageVariant.Composite, SupportedImageRepos = DotNetImageRepo.Aspnet }, + new ProductImageData { Version = V11_0, OS = OS.AzureLinux30Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux30, + ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.AzureLinux40Distroless, Arch = Arch.Arm64, SdkOS = OS.AzureLinux40, ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, new ProductImageData { Version = V11_0, OS = OS.Resolute, Arch = Arch.Arm64 }, @@ -403,6 +420,7 @@ public static class TestData ImageVariant = DotNetImageVariant.Composite | DotNetImageVariant.Extra, SupportedImageRepos = DotNetImageRepo.Aspnet }, new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.Alpine324 }, + new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux30Distroless, SdkOS = OS.AzureLinux30 }, new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.AzureLinux40Distroless, SdkOS = OS.AzureLinux40 }, new() { Version = V11_0, Arch = Arch.Arm64, SdkImageVariant = DotNetImageVariant.AOT, SupportedImageRepos = DotNetImageRepo.Runtime_Deps, OS = OS.ResoluteChiseled, SdkOS = OS.Resolute },