Dostosowywanie obrazu platformy Docker w celu uruchamiania własnej aplikacji internetowej

Ukończone

Usługa Docker Hub jest doskonałym źródłem obrazów, które ułatwiają tworzenie własnych konteneryzowanych aplikacji. Możesz pobrać obraz, który zapewnia wymaganą podstawową funkcjonalność, a następnie warstwę własnej aplikacji, aby utworzyć nowy obraz niestandardowy. Kroki tego procesu można zautomatyzować, pisząc plik Dockerfile.

W scenariuszu sklepu odzieżowego online firma zdecydowała, że platforma Docker jest drogą naprzód. Następnym krokiem jest ustalenie, jak zapewnić najlepszą konteneryzację aplikacji internetowych. Firma planuje skompilować wiele aplikacji przy użyciu platformy ASP.NET Core. Zauważyliśmy, że usługa Docker Hub zawiera obraz podstawowy zawierający tę platformę. Jako dowód koncepcji chcesz zacząć od tego obrazu podstawowego i dodać kod dla jednej z aplikacji internetowych, aby utworzyć nowy obraz niestandardowy. Chcesz również, aby ten proces był łatwo powtarzalny, więc można go zautomatyzować za każdym razem, gdy udostępnisz nową wersję aplikacji internetowej.

W tej lekcji dowiesz się, jak utworzyć niestandardowy obraz platformy Docker i jak zautomatyzować proces, pisząc plik Dockerfile.

Tworzenie niestandardowego obrazu za pomocą pliku Dockerfile

Aby utworzyć obraz platformy Docker zawierający aplikację, zazwyczaj zaczynasz od zidentyfikowania obrazu podstawowego, do którego dodawane są pliki i informacje o konfiguracji. Proces identyfikowania odpowiedniego obrazu podstawowego zwykle rozpoczyna się od wyszukiwania obrazów w usłudze Docker Hub. Potrzebujesz obrazu, który zawiera już strukturę aplikacji oraz wszystkie narzędzia i narzędzia dystrybucji systemu Linux, takie jak Ubuntu lub Alpine. Na przykład jeśli masz aplikację ASP.NET Core, którą chcesz spakować w kontenerze, możesz użyć opublikowanego przez firmę Microsoft obrazu o nazwie mcr.microsoft.com/dotnet/core/aspnet, który zawiera środowisko uruchomieniowe ASP.NET Core.

Obraz można dostosować, uruchamiając kontener przy użyciu obrazu podstawowego i wprowadzając w nim zmiany. Zmiany zwykle obejmują działania, takie jak kopiowanie plików do kontenera z lokalnego systemu plików i uruchamianie różnych narzędzi i narzędzi do kompilowania kodu. Po zakończeniu docker commit użyjesz polecenia , aby zapisać zmiany na nowym obrazie.

Ręczne ukończenie powyższego procesu jest czasochłonne i podatne na błędy. Można go utworzyć za pomocą języka skryptu, takiego jak Bash, ale platforma Docker zapewnia bardziej efektywny sposób automatyzacji tworzenia obrazów za pośrednictwem pliku Dockerfile.

Plik Dockerfile to plik w postaci zwykłego tekstu zawierający wszystkie polecenia potrzebne do utworzenia obrazu. Pliki Dockerfile są tworzone w bardzo prostym języku skryptów przeznaczonym do tworzenia i konfigurowania obrazów. Dokumentują operacje wymagane do utworzenia obrazu, zaczynając od obrazu podstawowego.

W poniższym przykładzie pokazano plik Dockerfile, który kompiluje aplikację .NET 6.0 i pakuje ją do nowego obrazu.

FROM mcr.microsoft.com/dotnet/sdk:6.0
WORKDIR /app
COPY myapp_code .
RUN dotnet build -c Release -o /rel
EXPOSE 80
WORKDIR /rel
ENTRYPOINT ["dotnet", "myapp.dll"]

W tym pliku są wykonywane następujące operacje:

Polecenie Akcja
FROM Pobiera określony obraz i tworzy nowy kontener na podstawie tego obrazu.
PRACADIR Ustawia bieżący katalog roboczy w kontenerze; używane przez kolejne polecenia.
KOPIOWAĆ Kopiuje pliki z komputera hosta do kontenera. Pierwszy argument (myapp_code) jest plikiem lub folderem na komputerze hosta. Drugi argument (.) określa nazwę pliku lub folderu, który ma być obiektem docelowym w kontenerze. W tym przypadku obiektem docelowym jest bieżący katalog roboczy (/app).
URUCHOM Wykonuje polecenie w kontenerze. Argumentami polecenia RUN są polecenia wprowadzane w wierszu polecenia.
WYSTAWIAĆ Tworzy konfigurację na nowym obrazie, który określa, które porty mają być otwierane po uruchomieniu kontenera. Jeśli w kontenerze jest uruchamiana aplikacja internetowa, zwykle udostępnia się port 80.
PUNKT WEJŚCIA Określa operację, którą kontener powinien uruchomić po uruchomieniu. W tym przykładzie jest uruchamiana nowo utworzona aplikacja. Należy określić polecenie, które chcesz uruchomić, i każdy z jego argumentów jako tablicę ciągów.

Zgodnie z konwencją w przypadku aplikacji przeznaczonych do spakowania w obrazach platformy Docker plik Dockerfile zwykle znajduje się w katalogu głównym kodu źródłowego. Prawie zawsze plik ten nosi nazwę Dockerfile.

Polecenie docker build uruchamia plik Dockerfile i tworzy nowy obraz. Składnia tego polecenia ma kilka parametrów:

  • Flaga -f określa nazwę pliku Dockerfile, który ma być używany.
  • Flaga -t określa nazwę obrazu do utworzenia; w tym przykładzie myapp:v1.
  • Ostatni parametr, ., udostępnia kontekst kompilacji plików źródłowych dla polecenia COPY: zbiór plików na komputerze hosta wymaganych w procesie kompilacji.
docker build -t myapp:v1 .

Za kulisami docker build polecenie tworzy kontener, uruchamia w nim polecenia, a następnie zatwierdza zmiany na nowym obrazie.