Eksplorowanie elementów pliku Dockerfile
Plik Dockerfile to skrypt zawierający szereg instrukcji używanych do tworzenia obrazu platformy Docker. Pliki Dockerfile zwykle zawierają następujące informacje:
- Obraz podstawowy lub nadrzędny używany do tworzenia nowego obrazu
- Polecenia służące do aktualizowania podstawowego systemu operacyjnego i instalowania innego oprogramowania
- Artefakty kompilacji do dołączenia, takie jak opracowana aplikacja
- Usługi do uwidocznienia, takie jak konfiguracja magazynu i sieci
- Polecenie wykonywane podczas uruchamiania kontenera
Tworzenie pliku Dockerfile
Pierwszym krokiem tworzenia pliku Dockerfile jest wybranie obrazu podstawowego, który służy jako podstawa aplikacji. Jeśli na przykład tworzysz aplikację .NET, możesz wybrać obraz microsoft .NET jako bazę.
# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0
# Set the working directory to /app
WORKDIR /app
# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .
# Expose port 80 to the outside world
EXPOSE 80
# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]
Przejdźmy przez poszczególne wiersze, aby zobaczyć, co robi:
FROM mcr.microsoft.com/dotnet/runtime:6.0
: to polecenie ustawia obraz podstawowy na środowisko uruchomieniowe platformy .NET 6, które jest wymagane do uruchamiania aplikacji platformy .NET 6.WORKDIR /app
: ustawia katalog roboczy na/app
, czyli miejsce, w którym są kopiowane pliki aplikacji.COPY bin/Release/net6.0/publish/ .
: kopiuje zawartość opublikowanej aplikacji do katalogu kontenera/app
. Zakładamy, że aplikacja .NET 6 została skompilowana i opublikowana wbin/Release/net6.0/publish
katalogu.EXPOSE 80
: uwidacznia port 80, który jest domyślnym portem HTTP na zewnątrz. Zmień ten wiersz odpowiednio, jeśli aplikacja nasłuchuje na innym porcie.CMD ["dotnet", "MyApp.dll"]
: polecenie do uruchomienia po uruchomieniu kontenera. W tym przypadku uruchamiamy polecenie dotnet o nazwie pliku DLL naszej aplikacji (MyApp.dll
). Zmień ten wiersz tak, aby był zgodny z nazwą aplikacji i punktem wejścia.
Nie będziemy obejmować specyfikacji pliku Dockerfile. Aby uzyskać więcej informacji, odwiedź dokumentację pliku Dockerfile. W miarę kompilowania końcowego obrazu kontenera w każdym z tych kroków jest tworzony buforowany obraz kontenera. Te obrazy tymczasowe są umieszczane jak warstwy na poprzednim obrazie i po ukończeniu wszystkich kroków są prezentowane jako pojedynczy obraz.
Zasoby
- Dokumentacja uruchamiania platformy Docker (CLI)
- Dokumentacja kompilacji platformy Docker