Spuštění aplikace ASP.NET Core v kontejnerech Dockeru

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.

Varování

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.

Tento článek ukazuje, jak spustit aplikaci ASP.NET Core v kontejnerech Dockeru.

Windows Home Edition nepodporuje Technologii Hyper-V a pro Docker je potřeba Technologie Hyper-V.

Informace o tom, jak kontejnerizovat aplikaci .NET s využitím nástroje dotnet publish, najdete v části Kontejnerizace aplikace .NET s.

ASP.NET core imagí Dockeru

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci Dockeru pro sestavení s více fázemi k sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tento obraz je navržen pro rychlé nasazení a spuštění aplikace, je relativně malý, takže výkon sítě z registru Dockeru na hostitele Dockeru je optimalizován. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění, zaručení co nejkratší doby od docker run do spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

Požadavky

Stažení ukázkové aplikace

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:<port> prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a nechte ho otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Automaticky odeberte kontejner při jeho ukončení.
    • Přiřaďte <port> na místním počítači k portu 8080 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetapp.
  • Přejděte do http://localhost:<port> prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít nasadit aplikaci do kontejneru zkopírováním prostředků potřebných během běhu. Tato část ukazuje, jak nasadit ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí je ladicí režim).
    • Vytvořte soubory ve publikované složce.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:<port> a zobrazte domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob k sestavení a nasazení, jakým jste to udělali v této části.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

V předchozím Dockerfile jsou soubory *.csproj zkopírovány a obnoveny jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, nemusí se dotnet restore příkaz spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS:

ASP.NET core imagí Dockeru

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci Dockeru pro sestavení s více fázemi k sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tento obraz je navržen pro rychlé nasazení a spuštění aplikace, je relativně malý, takže výkon sítě z registru Dockeru na hostitele Dockeru je optimalizován. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění, zaručení co nejkratší doby od docker run do spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

Požadavky

Stažení ukázkové aplikace

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:<port> prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a nechte ho otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Automaticky odeberte kontejner při jeho ukončení.
    • Přiřaďte <port> na místním počítači k portu 8080 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetapp.
  • Přejděte do http://localhost:<port> prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít nasadit aplikaci do kontejneru zkopírováním prostředků potřebných během běhu. Tato část ukazuje, jak nasadit ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu release (ve výchozím je režim ladění).
    • Vytvořte soubory ve složce published.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:<port> a zobrazte domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jakým jste to udělali v této části k sestavení a nasazení.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

V předchozím Dockerfile se soubory zkopírují a obnoví jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS:

ASP.NET Core obrázky Dockeru

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci Dockeru pro sestavení s více fázemi k sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tento obraz je navržen pro rychlé nasazení a spuštění aplikace, je relativně malý, takže výkon sítě z registru Dockeru na hostitele Dockeru je optimalizován. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění, zaručení co nejkratší doby od docker run do spuštění aplikace. V modelu Dockeru není nutná dynamická kompilace kódu.

Požadavky

Stažení ukázkové aplikace

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:<port> prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a udržujte jej otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Automaticky odstraňte kontejner při jeho ukončení.
    • Namapujte <port> na místním počítači port 8080 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetapp.
  • Přejděte do http://localhost:<port> prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít přejít s aplikací do kontejneru zkopírováním prostředků potřebných v době běhu aplikace. Tato část ukazuje, jak nasadit systém ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí režim ladění).
    • Vytvořte soubory ve složce publikované.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:<port> a zobrazte domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jaký jste použili v této části, k sestavení a nasazení.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Ve výše uvedeném Dockerfile se soubory zkopírují a obnoví jako jednotlivé vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS:

ASP.NET Core Docker imagí

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci sestavení Dockeru s více fázemi ke sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Obraz je navržen pro rychlé nasazení a spuštění aplikace a je relativně malý, což optimalizuje výkon sítě mezi Docker Registry a Docker hostitelem. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění a umožňuje co nejrychlejší spuštění aplikace od docker run. V modelu Dockeru není nutná dynamická kompilace kódu.

Požadavky

Stažení ukázkové aplikace

  • Stáhněte si ukázku klonováním .NET Docker repository:

    git clone https://github.com/dotnet/dotnet-docker
    

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Aby bylo možné spustit v kontejneru Windows, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v systémové liště a vyberte přepnout na kontejnery Windows.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a nechte ho otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Automaticky odeberte kontejner při jeho ukončení.
    • Namapujte port 5000 na místním počítači na port 80 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetapp.
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít nasadit aplikaci do kontejneru zkopírováním prostředků potřebných během běhu. Tato část ukazuje, jak nasadit ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí je ladicí režim).
    • Vytvořte soubory ve publikované složce.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:5000 a zobrazte domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob k sestavení a nasazení, jakým jste to udělali v této části.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

V předchozím Dockerfile jsou soubory *.csproj zkopírovány a obnoveny jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS:

ASP.NET Core Docker imagí

Pro účely tohoto kurzu si stáhnete ukázkovou aplikaci ASP.NET Core a spustíte ji v kontejnerech Dockeru. Ukázka funguje s kontejnery Linuxu i Windows.

Ukázkový soubor Dockerfile používá funkci sestavení Dockeru s více fázemi ke sestavení a spuštění v různých kontejnerech. Sestavení a spouštění kontejnerů se vytváří z imagí, které poskytuje Docker Hub od Microsoftu:

  • dotnet/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/core/sdk

    Ukázka používá tento obrázek k sestavení aplikace. Image obsahuje sadu .NET Core SDK, která obsahuje nástroje příkazového řádku (CLI). Image je optimalizovaná pro místní vývoj, ladění a testování jednotek. Díky nástrojům nainstalovaným pro vývoj a kompilaci je image relativně velká.

  • dotnet/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Tento obraz je navržený pro rychlé nasazení a spuštění aplikace. Je relativně malý, takže je optimalizovaný výkon sítě od registru Dockeru k hostiteli Dockeru. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění, což umožňuje nejrychlejší spuštění aplikace od docker run. V modelu Dockeru není nutná dynamická kompilace kódu.

  • dotnet/core/aspnet

    Ukázka používá tuto image ke spuštění aplikace. Image obsahuje modul runtime ASP.NET Core a knihovny a je optimalizovaný pro spouštění aplikací v produkčním prostředí. Obraz je navržen pro rychlé nasazení a spuštění aplikace a je relativně malý, což optimalizuje výkon sítě mezi Docker Registry a Docker hostitelem. Do kontejneru se zkopírují jenom binární soubory a obsah potřebný ke spuštění aplikace. Obsah je připravený ke spuštění a umožňuje co nejrychlejší spuštění aplikace od docker run. V modelu Dockeru není nutná dynamická kompilace kódu.

Požadavky

Stažení ukázkové aplikace

  • Stáhněte si ukázku klonováním .NET Docker repository:

    git clone https://github.com/dotnet/dotnet-docker
    

Místní spuštění aplikace

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spuštěním následujícího příkazu sestavte a spusťte aplikaci místně:

    dotnet run
    
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

  • Stisknutím ctrl+C na příkazovém řádku aplikaci zastavte.

Spuštění v kontejneru Linuxu nebo kontejneru Windows

  • Pokud chcete spustit v kontejneru Linuxu, klikněte pravým tlačítkem myši na ikonu klienta Dockeru na hlavním panelu a vyberte přepnout na kontejnery Linuxu.

  • Pokud chcete spustit Windows kontejner, klikněte pravým tlačítkem myši na ikonu klienta Dockeru v oznamovací oblasti a vyberte přepnout na Windows kontejnery.

  • Přejděte do složky Dockerfile v dotnet-docker/samples/aspnetapp.

  • Spuštěním následujících příkazů sestavte a spusťte ukázku v Dockeru:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Argumenty build příkazu:

    • Pojmenujte image aspnetapp.
    • Vyhledejte soubor Dockerfile v aktuální složce (tečka na konci).

    Argumenty příkazu spustit:

    • Přidělte pseudo-TTY a udržujte jej otevřené, i když není připojeno. (Stejný účinek jako --interactive --tty.)
    • Automaticky odstraňte kontejner při jeho ukončení.
    • Namapujte port 5000 na místním počítači na port 80 v kontejneru.
    • Pojmenujte kontejner aspnetcore_sample.
    • Zadejte image aspnetapp.
  • Přejděte do http://localhost:5000 prohlížeče a otestujte aplikaci.

Ruční sestavení a nasazení

V některých scénářích můžete chtít přejít s aplikací do kontejneru zkopírováním prostředků potřebných v době běhu aplikace. Tato část ukazuje, jak nasadit systém ručně.

  • Přejděte do složky projektu na adrese dotnet-docker/samples/aspnetapp/aspnetapp.

  • Spusťte příkaz dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty příkazu:

    • Sestavte aplikaci v režimu vydání (výchozí režim ladění).
    • Vytvořte soubory ve složce publikované.
  • Spustit aplikaci.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Přejděte na http://localhost:5000 a zobrazte domovskou stránku.

Pokud chcete použít ručně publikovanou aplikaci v kontejneru Dockeru, vytvořte nový soubor Dockerfile a pomocí docker build . příkazu sestavte image.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jaký jste použili v této části, k sestavení a nasazení.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Pokud chcete nový obrázek zobrazit, použijte docker images tento příkaz.

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jaký jste použili v této části, k sestavení a nasazení.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Ve výše uvedeném Dockerfile se soubory zkopírují a obnoví jako jednotlivé vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jaký jste použili v této části, k sestavení a nasazení.

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Jak je uvedeno v předchozím souboru Dockerfile, *.csproj tyto soubory se zkopírují, a obnoví se jako odlišné vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Soubor Dockerfile

Tady je soubor Dockerfile používaný příkazem docker build , který jste spustili dříve. dotnet publish Používá stejný způsob, jaký jste použili v této části, k sestavení a nasazení.

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Ve výše uvedeném Dockerfile se soubory zkopírují a obnoví jako jednotlivé vrstvy. docker build Když příkaz sestaví image, použije integrovanou mezipaměť. Pokud se *.csproj soubory od posledního docker build spuštění příkazu nezměnily, dotnet restore příkaz se nemusí spustit znovu. Místo toho se znovu použije integrovaná mezipaměť pro odpovídající dotnet restore vrstvu. Další informace najdete v tématu Osvědčené postupy pro zápis souborů Dockerfile.

Další materiály

Další kroky

Úložiště Git, které obsahuje ukázkovou aplikaci, obsahuje také dokumentaci. Přehled prostředků dostupných v úložišti najdete v souboru README. Konkrétně se dozvíte, jak implementovat HTTPS: