Image | |
---|---|
SDK | mcr.microsoft.com/dotnet/sdk |
Runtime | mcr.microsoft.com/dotnet/runtime |
Det finnes også enkelte images optimalisert for f.eks. web (ASP.NET Core):
Image | |
---|---|
ASP.NET Core | mcr.microsoft.com/dotnet/aspnetcore |
Note
Microsoft sine offisielle images var tidligere på Docker Hub, men er nå flyttet på Microsoft sitt eget registry på mcr.microsoft.com. De har likevel en konto for synlighetens skyld: https://hub.docker.com/_/microsoft-dotnet
Dockerfile
som bygger og publiserer en ASP.NET Core app, vha multistage builds for minst mulig output image:
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env
WORKDIR /App
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /App
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "MyProject.dll"]
Man kan også lage containers uten en Dockerfile. Følgende dotnet publish
bygger og publiserer et image til en lokal Docker daemon, hvor SDKet finner ut av relevante images – helt uten å måtte vedlikeholde en Dockerfile.
$ dotnet publish -p:PublishProfile=DefaultContainer
MSBuild version 17.7.1+971bf70db for .NET
Determining projects to restore...
Restored /Users/johnkors/kode/blank/dotnet-intro/samples/MyApiApp/MyApiApp.csproj (in 101 ms).
MyApiApp -> /Users/johnkors/kode/blank/dotnet-intro/samples/MyApiApp/bin/Debug/net7.0/MyApiApp.dll
MyApiApp -> /Users/johnkors/kode/blank/dotnet-intro/samples/MyApiApp/bin/Debug/net7.0/publish/
Building image 'myapiapp' with tags 1.0.0 on top of base image mcr.microsoft.com/dotnet/aspnet:7.0
Pushed container 'myapiapp:1.0.0' to local daemon
$ docker images | grep myapi
myapiapp 1.0.0 4b7278994041 About a minute ago 212MB
Det er og mulig å customize & parameterisere ting via msbuild properties, f.eks tag via ContainerImageTags
:
dotnet publish -p:PublishProfile=DefaultContainer -p:ContainerImageTags='"1.2.3-alpha2;latest"'
evt:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
+ <ContainerImageTags>1.2.3-alpha2;latest</ContainerImageTags>
</PropertyGroup>
</Project>
Warning
Har man mer komplekse bygg, så er kanskje ikke dette en god løsning.
Warning
Støtter foreløpig kun Linux-x64 containers (ingen Windows eller ARM).