.NET 7.0’daki yenilikler [15]: Dockerfile olmadan .NET CLI ile Docker dağıtımı

Saberie

Active member
Düzgün yapılandırılmış bir Dockerfile yazma zahmetinden kaçınmak istiyorsanız, .NET komut satırı arabirimini (dotnet/dotnet.exe) kullanarak doğrudan .NET 7.0’da Docker kapsayıcıları oluşturabilirsiniz.







Dr Holger Schwichtenberg, güvenlikle ilgili son derece kritik alanlarda bile yenilik ve deneyim odaklı yazılım geliştirme sunan MAXIMAGO’da Baş Teknoloji Uzmanıdır. Aynı zamanda, çok sayıda orta ölçekli ve büyük şirketi yazılım geliştirme ve işletim konusunda 38 ünlü uzmanla danışmanlık ve eğitimle destekleyen uzman ağı www.IT-Visions.de’nin başkanıdır.







Bunu yapmak için Microsoft, mevcut .NET CLI komutuyla birlikte kullanılabilen Microsoft.NET.Build.Containers adlı yeni bir NuGet paketi yayımladı. dotnet publish kullanabilmek.

.NET CLI komutlarını içeren aşağıdaki PowerShell betiği, yeni bir .NET projesi (bu durumda bir Blazor Sunucu uygulaması) oluşturmaktan ve başlangıç sayfasındaki kodu düzenlemekten (uygulamanın gerçekten çalıştığını göstermek için) birkaç komut satırı komutunun sırasını gösterir. kapsayıcıda) Linux kapsayıcısında çalışan web sunucusunu çağırmak ve tarayıcıyı başlatmak için Docker dağıtımı yoluyla.


# Projekt anlegen (hier: ASP.NET Core Blazor Server)
dotnet new blazorserver -n BSContainer

# In den Ordner wechseln
cd .BSContainer

# Programmcode in Startseite austauschen mit Informationen über
# Umgebung, .NET- und OS-Version sowie Prozess
$indexpage = @'
@page "/"
<PageTitle>Index</PageTitle>
<h1>Hallo iX-Leser*in,</h1>
<p>diese Blazor Server App läuft
@if (System.Environment.GetEnvironmentVariable
("DOTNET_RUNNING_IN_CONTAINER")=="true")
{ <text><b>im Container </b></text> }
else
{ <text>nicht im Container </text> }
mit
@System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription
auf @System.Runtime.InteropServices.RuntimeInformation.OSDescription!
</p>
<p>Prozess:
@System.Diagnostics.Process.GetCurrentProcess().ProcessName<br>
Prozessidentität:
@[email protected]</p>
'@
$indexpage | Set-Content "pages/index.razor"

# Container-Build-Paket hinzufügen
dotnet add package Microsoft.NET.Build.Containers

# Veröffentlichen als Container
dotnet publish --os linux --arch x64 -c Release
-p:publishProfile=DefaultContainer

# Start des Containers (in getrennten Prozess,
# weil sonst dieser hier blockiert ist)
Start-Process powershell {
docker run -it --rm -p 5000:80 bscontainer:1.0.0 }

# optionaler Aufruf des Browsers zur Kontrolle
Start-Process "http://localhost:5000"



Yeni NuGet paketi, karşılık gelen temel görüntüyü (burada “mcr.microsoft.com/dotnet/aspnet:7.0”) seçen ve yapılandıran PublishProfile “DefaultContainer” sağlar. Docker kurulu olmalıdır ve hedef kapsayıcı otomatik olarak Linux x64 üzerinde çalışır.







PowerShell penceresi, kapsayıcıda ASP.NET Core Blazor Sunucusu ile çalışan web sunucusunun çıktısını gösterir ve tarayıcı penceresi buna erişir.




(rm)



Haberin Sonu
 
Üst