Przejdź do treści stopki
Iron Academy Logo
Naucz się C#
Naucz się C#

Inne Kategorie

Łatwe konteneryzowanie aplikacji C# za pomocą .NET CLI

Tim Corey
9m 57s

Kontenery to potężne narzędzie, ale dla wielu programistów pomysł osadzenia aplikacji C# w kontenerze może wydawać się przytłaczający. Konfigurowanie pliku Dockerfile i ręczne zarządzanie zależnościami może być skomplikówane. Jednak, jak Tim Corey wyjaśnia w swoim wideo, .NET CLI upraszcza ten proces, umożliwiając programistom osadzanie aplikacji w kontenerach bez potrzeby posiadania pliku Dockerfile.

W tym artykułe przyjrzymy się bliżej procesówi umieszczania aplikacji C# w kontenerze za pomocą podejścia krok po kroku Tima z jego wideo, "Containerize Your C# Application Easily with the .NET CLI". Podążając za wskazówkami Tima, zrozumiemy, jak bez trudu opublikować aplikację .NET w kontenerze Docker.

Wprowadzenie do .NET CLI dla kontenerów

Na początku wideo Tim wyjaśnia potrzebę konteneryzacji. Podkreśla, że choć kontenery to doskonałe narzędzie, proces konfigurowania pliku Dockerfile i jego poprawnej konfiguracji może być złożony.

Zamiast ręcznie tworzyć plik Dockerfile, Tim wprowadza łatwiejsze podejście wykorzystujące .NET CLI. Ta metoda pozwala programistom stworzyć aplikację w kontenerze bez ręcznego pisania pliku Dockerfile.

Tim wyjaśnia również, że to wideo jest częścią jego serii szkoleń trwających 10 minut, które skupiają się na szybkich i efektywnych wprowadzeniach do zagadnień technicznych.

Konfiguracja aplikacji

Tim zaczyna od użycia minimalnej aplikacji Web API jako przykładu. Aplikacja zawiera pojedynczy punkt końcowy nazwany /messages, który zwraca pewne dane.

Aby zademonstrować zachowanie aplikacji przed konteneryzacją, Tim uruchamia ją lokalnie. Uzyskując dostęp do punktu końcowego /messages, potwierdza, że działa on poprawnie poza kontenerem.

Przed przystąpieniem do konteneryzacji sprawdza również, że:

  • Docker jest zainstalowany i uruchomiony na jego maszynie.
  • Na początku nie ma istniejących obrazów Docker ani kontenerów.

Zapewnia to, że kiedy nowy kontener zostanie stworzony, można wyraźnie zobaczyć zmiany.

Przygotowanie do konteneryzacji

Aby umieścić aplikację w kontenerze, Tim przechodzi do linii poleceń wewnątrz katalogu projektu. Następnie uruchamia następujące polecenie:

dotnet publish -o:Linux -a:x64 -p:PublishProfile=DefaultContainer -c:Release

Tim analizuje każdą część polecenia:

  • -o:Linux → Publikuje aplikację dla kontenera opartego na Linuksie.
  • -a:x64 → Określa architekturę jako 64-bitową.
  • -p:PublishProfile=DefaultContainer → Używa domyślnych ustawień kontenera.
  • -c:Release → Publikuje aplikację w trybie release w celu poprawy wydajności.

Tim podkreśla, że kontenery Linuksa są preferowane nad kontenerami Windows, ponieważ kontenery Windows głównie służą jako pomost dla aplikacji w .NET Framework.

Publikowanie i tworzenie kontenera

Po wykonaniu polecenia publikacji, Tim wyjaśnia, że .NET CLI automatycznie określi niezbędne konfiguracje i zapakuje wszystko w kontener. Wskazuje, że:

  • W tej metodzie nie ma potrzeby posiadania pliku Dockerfile.
  • Proces buduje aplikację i umieszcza ją w kontenerze jednym krokiem.
  • Podstawowy obraz używany to kontener środowiska uruchomieniowego .NET 8 firmy Microsoft.

Po publikacji sprawdza Docker Desktop i potwierdza, że nowy obraz kontenera, background-demo, został utworzony. Początkowy rozmiar kontenera to 221 MB.

Tim uspokaja widzów, że ten rozmiar można później zmniejszyć.

Uruchamianie kontenera

Aby przetestować aplikację w kontenerze, Tim uruchamia kontener bezpośrednio z Docker Desktop. Ponieważ jeszcze nie ma uruchomionych kontenerów, klika "Run" i ustawia opcjonalne ustawienie:

  • Mapuje wewnętrzny port kontenera (przypisany losowo) na port 8080 na maszynie hosta.

Po uruchomieniu uzyskuje dostęp do aplikacji za pomocą przeglądarki internetowej. Na początku uzyskanie dostępu do głównego adresu URL daje błąd 404, ale przechodząc do /messages, wyświetla oczekiwane dane.

Tim podkreśla ważny punkt:

  • Aplikacja działa w czasie UTC w kontenerze, który może różnić się od strefy czasowej lokalnej maszyny.

Zauważa również, że ponieważ aplikacja była opublikowana w trybie release, Swagger UI jest domyślnie wyłączony.

Optymalizacja rozmiaru kontenera

W tym momencie domyślny rozmiar kontenera to 221 MB, co Tim uznaje za dość duży. Aby zmniejszyć rozmiar, wprowadza lżejszy obraz bazowy.

Zmieniając plik Program.cs, ustawia rodzinę kontenerów na jammy-chiseled, mniejszy obraz oparty na Ubuntu:

builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");

Następnie ponownie uruchamia polecenie publikacji i po ponownym zbudowaniu kontenera sprawdza rozmiar obrazu.

Nowy rozmiar obrazu to 113 MB — redukcja o około 100 MB! Pomimo mniejszego rozmiaru, aplikacja działa identycznie.

Usuwanie i ponowne tworzenie kontenerów

Tim demonstruje usunięcie kontenera, aby oczyścić przestrzeń roboczą. Jednak obraz Docker pozostaje dostępny, więc kontener można odtworzyć w razie potrzeby.

Podkreśla, że gdy kontener jest zbudowany, można go:

  • Uruchamiać lokalnie do rozwoju i testowania.
  • Wypychać do rejestru kontenerów jak Docker Hub lub Azure Container Registry.
  • Użyć jako podstawy dla aplikacji webowej wdrożonej w chmurze.

Podsumowanie i końcowe przemyślenia

Tim kończy wideo, wzmacniając kluczowe korzyści z użycia .NET CLI do konteneryzacji:

  1. Brak potrzeby pliku Dockerfile – .NET CLI zajmuje się wszystkim automatycznie.
  2. Szybki i łatwy proces – Jednym poleceniem można umieścić aplikację w kontenerze.
  3. Mniejsze, zoptymalizowane obrazy – Użycie jammy-chiseled zmniejsza rozmiar kontenera.
  4. Bezproblemowe wdrożenie – Kontener można wypchnąć do różnych usług chmurowych.

Podsumowanie

Podejście Tima do konteneryzacji aplikacji C# za pomocą .NET CLI jest proste, szybkie i skuteczne. Podążając za jego metodą, programiści mogą tworzyć i optymalizować kontenery bez potrzeby posiadania zaawansowanej wiedzy o Docker.

Wykorzystując kontenery Linuksa, zoptymalizowane obrazy bazowe i uproszczone polecenia publikacji, technika ta pozwala programistom efektywnie umieszczać swoje aplikacje w kontenerach przy minimalnym wysiłku.

Jeśli chcesz zgłębić temat, koniecznie zobacz wideo Tima Coreya. Zawiera jasny, krok po kroku przegląd całego procesu.

Hero Worlddot related to Łatwe konteneryzowanie aplikacji C# za pomocą .NET CLI
Hero Affiliate related to Łatwe konteneryzowanie aplikacji C# za pomocą .NET CLI

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie