.NET 7.0'dan beri zaten yapabilirsiniz dotnet publish Bir Docker dosyası önceden (ek bir metin dosyası) sağlamak zorunda kalmadan bir Docker kapsayıcısı oluşturun.
Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Opsiyon için .NET 7.0 ile biri PublishProfile=DefaultContainer Oluşturulan Docker kabı, Docker'da aktif bir kap olarak otomatik olarak sağlandı.
.NET 8.0 ayrıca ek bir seçenek sunar: -ContainerArchiveOutputPath. Bu, doğrudan aktif bir kaplama olarak sağlamadan bir kap dosyası (Tar.gz) oluşturmanıza olanak tanır:
dotnet publish -p PublishProfile=DefaultContainer
-p ContainerArchiveOutputPath=t:meinblazorimage.tar.gz
-p:ContainerBaseImage=mcr.microsoft.com/dotnet/aspnet:8.0-alpine
(Resim: Dmytro Vikarchuk/Shutterstock)
BetterCode Online Konferansı () .NET 9.0 of 19 Kasım 2024'te IX ve dpunkt.verlag .net-Expert www.it-visions.de'den.
Bunlar.
Program altı ders, tartışma ve altı seminer sunuyor. Biletler 22 Ekim'e kadar ilk kitap ödülünde mevcuttur.
Aşağıdaki kod tüm örneği göstermektedir:
function New-TempDirectory {
$parent = [System.IO.Path]::GetTempPath()
[string] $name = [System.Guid]::NewGuid()
New-Item -ItemType Directory -Path (Join-Path $parent $name)
}
docker --version
# Tempordner erzeugen und dahin wechseln
New-TempDirectory | cd
# Projekt anlegen (hier: Blazor SSR)
dotnet new blazor -n BlazorImContainer
# In den Ordner wechseln
cd .BlazorImContainer
#region Programmcode in Startseite austauschen mit Informationen über Umgebung, .NET- und OS-Version sowie Prozess
$indexpage = @'
@page "/"
<PageTitle>Index</PageTitle>
<h1>Liebe Leser*innen,</h1>
<p>diese Blazor Web App (Blazor Static SSR) läuft
@if (System.Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER")=="true")
{ <text><b>im Container </b></text> }
else
{ <text>nicht im Container </text> }!</p>
<p>
.NET-Version: @System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription<br>
Betriebssystem: @System.Runtime.InteropServices.RuntimeInformation.OSDescription<br>
Prozess: @System.Diagnostics.Process.GetCurrentProcess().ProcessName<br>
Prozessidentität: @[email protected]<br>
IsPrivilegedProcess: @System.Environment.IsPrivilegedProcess</p>
<hr>
Umgebungsvariablen:
<ul>
@foreach(System.Collections.DictionaryEntry e in System.Environment.GetEnvironmentVariables())
{
<li>@e.Key: @e.Value</li>
}
</ul>
'@
$indexpage | Set-Content "components/pages/home.razor"
#endregion
# Container-Build-Paket hinzufügen (neu seit .NET 7.0, wird nicht mehr explizit gebraucht in .NET 8.0!!!)
#dotnet add package Microsoft.NET.Build.Containers --prerelease
# Veröffentlichen als Containerdatei (neu seit .NET 8.0)
dotnet publish -p PublishProfile=DefaultContainer -p ContainerArchiveOutputPath=t:meinblazorimage.tar.gz -p:ContainerBaseImage=mcr.microsoft.com/dotnet/aspnet:8.0-alpine
# dann irgendwann: Laden in Docker
docker load --input t:meinblazorimage.tar.gz
# Das ging schon in .NET 7.0
# Veröffentlichen als Container, alle MSBuild-Properties nach PublishProfile=DefaultContainer sind optional
#dotnet publish --os linux --arch x64 -c Release -p
ublishProfile=DefaultContainer -p:ContainerImageName=meinblazorimage #-p:ContainerBaseImage=mcr.microsoft.com/dotnet/aspnet:7.0-alpine
# Start des Containers (in getrennten Prozess, weil sonst dieser hier blockiert ist)
Start-Process powershell { docker run -it --rm -p 5000:8080 blazorimcontainer }
# optionaler Aufruf des Browsers zur Kontrolle
Start-Process "http://localhost:5000"
(RME)

Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Opsiyon için .NET 7.0 ile biri PublishProfile=DefaultContainer Oluşturulan Docker kabı, Docker'da aktif bir kap olarak otomatik olarak sağlandı.
.NET 8.0 ayrıca ek bir seçenek sunar: -ContainerArchiveOutputPath. Bu, doğrudan aktif bir kaplama olarak sağlamadan bir kap dosyası (Tar.gz) oluşturmanıza olanak tanır:
dotnet publish -p PublishProfile=DefaultContainer
-p ContainerArchiveOutputPath=t:meinblazorimage.tar.gz
-p:ContainerBaseImage=mcr.microsoft.com/dotnet/aspnet:8.0-alpine

(Resim: Dmytro Vikarchuk/Shutterstock)
BetterCode Online Konferansı () .NET 9.0 of 19 Kasım 2024'te IX ve dpunkt.verlag .net-Expert www.it-visions.de'den.
Bunlar.
Program altı ders, tartışma ve altı seminer sunuyor. Biletler 22 Ekim'e kadar ilk kitap ödülünde mevcuttur.
Aşağıdaki kod tüm örneği göstermektedir:
function New-TempDirectory {
$parent = [System.IO.Path]::GetTempPath()
[string] $name = [System.Guid]::NewGuid()
New-Item -ItemType Directory -Path (Join-Path $parent $name)
}
docker --version
# Tempordner erzeugen und dahin wechseln
New-TempDirectory | cd
# Projekt anlegen (hier: Blazor SSR)
dotnet new blazor -n BlazorImContainer
# In den Ordner wechseln
cd .BlazorImContainer
#region Programmcode in Startseite austauschen mit Informationen über Umgebung, .NET- und OS-Version sowie Prozess
$indexpage = @'
@page "/"
<PageTitle>Index</PageTitle>
<h1>Liebe Leser*innen,</h1>
<p>diese Blazor Web App (Blazor Static SSR) läuft
@if (System.Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER")=="true")
{ <text><b>im Container </b></text> }
else
{ <text>nicht im Container </text> }!</p>
<p>
.NET-Version: @System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription<br>
Betriebssystem: @System.Runtime.InteropServices.RuntimeInformation.OSDescription<br>
Prozess: @System.Diagnostics.Process.GetCurrentProcess().ProcessName<br>
Prozessidentität: @[email protected]<br>
IsPrivilegedProcess: @System.Environment.IsPrivilegedProcess</p>
<hr>
Umgebungsvariablen:
<ul>
@foreach(System.Collections.DictionaryEntry e in System.Environment.GetEnvironmentVariables())
{
<li>@e.Key: @e.Value</li>
}
</ul>
'@
$indexpage | Set-Content "components/pages/home.razor"
#endregion
# Container-Build-Paket hinzufügen (neu seit .NET 7.0, wird nicht mehr explizit gebraucht in .NET 8.0!!!)
#dotnet add package Microsoft.NET.Build.Containers --prerelease
# Veröffentlichen als Containerdatei (neu seit .NET 8.0)
dotnet publish -p PublishProfile=DefaultContainer -p ContainerArchiveOutputPath=t:meinblazorimage.tar.gz -p:ContainerBaseImage=mcr.microsoft.com/dotnet/aspnet:8.0-alpine
# dann irgendwann: Laden in Docker
docker load --input t:meinblazorimage.tar.gz
# Das ging schon in .NET 7.0
# Veröffentlichen als Container, alle MSBuild-Properties nach PublishProfile=DefaultContainer sind optional
#dotnet publish --os linux --arch x64 -c Release -p
# Start des Containers (in getrennten Prozess, weil sonst dieser hier blockiert ist)
Start-Process powershell { docker run -it --rm -p 5000:8080 blazorimcontainer }
# optionaler Aufruf des Browsers zur Kontrolle
Start-Process "http://localhost:5000"
(RME)