Sdílet prostřednictvím


Sestavení projektu kontejneru z příkazového řádku

Pokud chcete vytvořit projekt kontejneru s souborem Dockerfile mimo Visual Studio, můžete použít docker build (nebo podman build) nebo dotnet publish /t:PublishContainer sestavit z příkazového řádku.

Pokud používáte způsob sestavení .NET SDK, nemáte k dispozici Dockerfile, proto nemůžete použít docker build nebo podman build; místo toho použijte dotnet publish /t:PublishContainer pro sestavení v příkazovém řádku.

Pokud chcete vytvořit projekt kontejneru s souborem Dockerfile mimo Visual Studio, můžete ho použít docker build nebo dotnet publish /t:PublishContainer sestavit z příkazového řádku.

Pokud používáte typ sestavení sady .NET SDK, nemáte soubor Dockerfile, takže ho nemůžete použít docker build. Místo toho použijte dotnet publish /t:PublishContainer k sestavení na příkazovém řádku.

Požadavky

Požadavky

  • Docker Desktop.
  • Visual Studio s nainstalovanou úlohou vývoje pro ASP.NET a webový vývoj, úlohou vývoje pro Azure a/nebo úlohou vývoje pomocí .NET pro desktop.

Použijte sestavení Docker

K sestavení kontejnerizovaného řešení z příkazového řádku můžete obvykle použít příkaz docker build <context> pro každý projekt v řešení. Poskytnete argument kontextu sestavení . Kontext sestavení souboru Dockerfile je složka na místním počítači, který se používá jako pracovní složka k vygenerování image. Jedná se například o složku, ze které kopírujete soubory při kopírování do kontejneru. V projektech .NET Core je výchozí použít složku, která obsahuje soubor řešení (.sln nebo .slnx). Vyjádřeno jako relativní cesta, tento argument je obvykle "." pro soubor Dockerfile ve složce projektu a soubor řešení ve své nadřazené složce.

docker build -f Dockerfile ..

Pro projekty rozhraní .NET Framework je výchozím kontextem sestavení složka projektu, nikoli složka řešení.

Kontext sestavení v souboru projektu můžete nastavit nastavením vlastnosti DockerfileContext. Například

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

Použijte Docker build nebo Podman build

K sestavení kontejnerizovaného řešení z příkazového řádku můžete obvykle použít příkaz docker build <context> (nebo podman build <context>) pro každý projekt v řešení. Poskytnete argument kontextu sestavení . Kontext sestavení souboru Dockerfile je složka na místním počítači, který se používá jako pracovní složka k vygenerování image. Jedná se například o složku, ze které kopírujete soubory při kopírování do kontejneru. V projektech .NET Core je výchozí použít složku, která obsahuje soubor řešení (.sln nebo .slnx). Vyjádřeno jako relativní cesta, tento argument je obvykle "." pro soubor Dockerfile ve složce projektu a soubor řešení ve své nadřazené složce.

docker build -f Dockerfile ..
podman build -f Dockerfile ..

Kontext sestavení v souboru projektu můžete nastavit nastavením vlastnosti ContainerBuildContext. Například

<PropertyGroup>
   <ContainerBuildContext>contextfolder</ContainerBuildContext>
</PropertyGroup>

Relativní cesty v souboru Dockerfile jsou relativní vzhledem k kontextu sestavení, takže pokud změníte kontext, nezapomeňte odpovídajícím způsobem aktualizovat relativní cesty.

S verzemi Visual Studio 17.11 a novějšími, když přidáte podporu Dockeru do projektu, můžete zadat složku pro kontext sestavení. Pokud chcete změnit kontext sestavení, můžete odstranit soubor Dockerfile (pokud neobsahuje další změny, které chcete zachovat) a znovu spustit Přidat podporu Dockeru, tentokrát zadejte nový kontext sestavení. Nový soubor Dockerfile bude mít aktualizované relativní cesty, aby odpovídaly novému kontextu sestavení.

Když do projektu přidáte podporu kontejneru, můžete zadat složku pro kontext sestavení. Pokud chcete změnit kontext sestavení, můžete odstranit soubor Dockerfile (pokud neobsahuje další změny, které chcete zachovat) a znovu spustit možnost Přidat podporu kontejneru, tentokrát zadejte nový kontext sestavení. Nový soubor Dockerfile bude mít aktualizované relativní cesty, aby odpovídaly novému kontextu sestavení.

Použití nástroje MSBuild

Poznámka

Tato část popisuje, jak můžete kontejnery přizpůsobit, když zvolíte typ sestavení kontejneru Dockerfile. Pokud používáte typ sestavení sady .NET SDK, možnosti přizpůsobení se liší a informace v tomto článku se nepoužijí. Místo toho se podívejte na Kontejnerizujte aplikaci .NET pomocí příkazu dotnet publish.

Soubory Dockerfile vytvořené v sadě Visual Studio pro projekty .NET Framework (a pro projekty .NET Core vytvořené pomocí verzí sady Visual Studio před sadou Visual Studio 2017 Update 4) nejsou soubory Dockerfile s více fázemi. cs-CZ: Kroky v těchto Dockerfiles nesestavují váš kód. Visual Studio místo toho, když sestavuje soubor Dockerfile rozhraní .NET Framework, nejprve zkompiluje váš projekt pomocí nástroje MSBuild. Když se to podaří, Visual Studio sestaví Dockerfile, který jednoduše zkopíruje výstup sestavení z nástroje MSBuild do vytvořené Docker image. Protože kroky ke kompilaci kódu nejsou součástí souboru Dockerfile, nemůžete sestavit soubory Dockerfile rozhraní .NET Framework pomocí docker build z příkazového řádku. K sestavení těchto projektů byste měli použít nástroj MSBuild.

Pokud chcete vytvořit image pro jeden projekt kontejneru Dockeru, můžete použít MSBuild s možností příkazu /t:ContainerBuild. Tento příkaz říká nástroji MSBuild, aby místo výchozího cílového ContainerBuildsestavil cílový Build . Například:

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

Při sestavování řešení z integrovaného vývojového prostředí sady Visual Studio se zobrazí výstup podobný tomu, co vidíte v okně Výstup. Vždy používejte /p:Configuration=Release, protože v případech, kdy Visual Studio používá vícefázovou optimalizaci sestavení, nemusí být výsledky sestavování konfigurace Ladění očekávané. Viz Přizpůsobte obrazy kontejnerů pro ladění.

Pokud používáte projekt Docker Compose, pomocí tohoto příkazu sestavte image:

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

Pokud chcete zobrazit protokoly MSBuild, viz Získání protokolů sestavení pomocí MSBuild.

Sestavení z příkazového řádku

Visual Studio používá rychlý režim (pokud je povolený) k vytvoření image kontejneru nakonfigurované tak, aby fungovala nejlépe pro vývoj a ladění, takže po sestavení Rychlého režimu nedoporučujeme kopírovat příkazy sestavení Dockeru z okna Výstup. Pokud chcete vytvořit standardní image bez nestandardních optimalizací, můžete kliknout pravým tlačítkem na soubor Dockerfile a zvolit možnost Sestavit image Dockeru .

Visual Studio používá rychlý režim (pokud je povolený) k vytvoření image kontejneru nakonfigurované tak, aby fungovala nejlépe pro vývoj a ladění, takže po sestavení rychlého režimu nedoporučujeme kopírovat docker build příkazy z podman build okna Výstup. Pokud chcete vytvořit standardní image bez nestandardních optimalizací, můžete kliknout pravým tlačítkem na soubor Dockerfile a zvolit možnost Sestavit image .

Visual Studio používá značku dev k označení obrázků, které jsou speciálně připraveny k optimalizaci času spuštění při ladění. Tyto image by se ale neměly používat mimo kontext sady Visual Studio. Tato značka značí, že obrázky mají nestandardní úpravy a přizpůsobení, například pro podporu ladění rychlého režimu. Podívejte se na Přizpůsobení kontejnerů Dockeru ve Visual Studiu.