Udostępnij za pośrednictwem


Kompilowanie projektu kontenera z poziomu wiersza polecenia

Jeśli chcesz utworzyć projekt kontenera przy użyciu pliku Dockerfile poza programem Visual Studio, możesz użyć docker build, MSBuild, dotnet buildlub dotnet publish do skompilowania z poziomu wiersza polecenia.

Jeśli używasz typu kompilacji zestawu .NET SDK, nie masz pliku Dockerfile, więc nie możesz użyć docker build; Zamiast tego użyj MSBuild, dotnet build lub dotnet publish, aby utworzyć w wierszu polecenia.

Korzystanie z kompilacji platformy Docker

Aby utworzyć rozwiązanie konteneryzowane z poziomu wiersza polecenia, zazwyczaj można użyć polecenia docker build <context> dla każdego projektu w rozwiązaniu. Podaj kontekst kompilacji oraz argument. Kontekst kompilacji dla pliku Dockerfile to folder na komputerze lokalnym, który jest używany jako folder roboczy do tworzenia obrazu. Na przykład jest to folder, z którego kopiujesz pliki podczas kopiowania do kontenera. W projektach platformy .NET Core domyślną wartością jest użycie folderu zawierającego plik rozwiązania (.sln). Wyrażony jako ścieżka względna, ten argument to zazwyczaj ".." dla pliku Dockerfile w folderze projektu oraz pliku rozwiązania w folderze nadrzędnym. W przypadku projektów programu .NET Framework domyślny kontekst kompilacji to folder projektu, a nie folder rozwiązania.

docker build -f Dockerfile ..

Kontekst kompilacji można ustawić w pliku projektu, ustawiając właściwość DockerfileContext. Na przykład

<PropertyGroup>
   <DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>

Ścieżki względne w pliku Dockerfile są względne względem kontekstu kompilacji, więc jeśli zmienisz kontekst, pamiętaj, aby odpowiednio zaktualizować ścieżki względne.

W programie Visual Studio 17.11 lub nowszym po dodaniu obsługi platformy Docker do projektu można określić folder dla kontekstu kompilacji. Jeśli chcesz zmienić kontekst kompilacji, możesz usunąć plik Dockerfile (jeśli nie ma innych zmian, które chcesz zachować) i ponownie uruchomić Dodaj obsługę platformy Docker, tym razem określając nowy kontekst kompilacji. Nowy plik Dockerfile będzie miał zaktualizowane ścieżki względne, aby odpowiadały nowemu kontekstowi kompilacji.

Korzystanie z programu MSBuild

Notatka

W tej sekcji opisano sposób dostosowywania kontenerów platformy Docker podczas wybierania typu kompilacji kontenera Dockerfile. Jeśli używasz typu kompilacji zestawu .NET SDK, opcje dostosowywania są inne, a informacje zawarte w tym artykule nie mają zastosowania. Zamiast tego, spójrz na Konteneryzowanie aplikacji .NET za pomocą dotnet publish.

Pliki Dockerfile utworzone przez program Visual Studio dla projektów .NET Framework (i dla projektów .NET Core utworzonych w wersjach Visual Studio starszych niż Visual Studio 2017 Update 4) nie są wielostopniowymi Dockerfile. Instrukcje w tych Dockerfili nie kompilują twojego kodu. Zamiast tego, gdy program Visual Studio kompiluje plik Dockerfile programu .NET Framework, najpierw kompiluje projekt przy użyciu programu MSBuild. Po pomyślnym zakończeniu program Visual Studio skompiluje plik Dockerfile, który po prostu kopiuje dane wyjściowe kompilacji z programu MSBuild do wynikowego obrazu platformy Docker. Ponieważ kroki kompilowania kodu nie są uwzględnione w pliku Dockerfile, nie można skompilować plików Dockerfile programu .NET Framework przy użyciu docker build z wiersza polecenia. Należy użyć programu MSBuild do skompilowania tych projektów.

Aby utworzyć obraz dla pojedynczego projektu kontenera platformy Docker, możesz użyć programu MSBuild z opcją polecenia /t:ContainerBuild. To polecenie nakazuje programowi MSBuild budowanie docelowego ContainerBuild zamiast domyślnego Build. Na przykład:

MSBuild MyProject.csproj /t:ContainerBuild /p:Configuration=Release

Zobaczysz dane wyjściowe podobne do tych, które są widoczne w oknie Output podczas kompilowania rozwiązania z poziomu środowiska IDE programu Visual Studio. Zawsze używaj /p:Configuration=Release, ponieważ w przypadkach, gdy program Visual Studio korzysta z optymalizacji kompilacji wieloetapowej, wyniki podczas kompilowania konfiguracji Debug mogą nie być zgodne z oczekiwaniami. Zobacz Dostosowywanie obrazów kontenerów na potrzeby debugowania.

Jeśli używasz projektu Docker Compose, użyj tego polecenia, aby skompilować obrazy:

msbuild /p:SolutionPath=<solution-name>.sln /p:Configuration=Release docker-compose.dcproj

Aby wyświetlić dzienniki programu MSBuild, zobacz Uzyskiwanie dzienników kompilacji za pomocą programu MSBuild.