Aracılığıyla paylaş


Docker kapsayıcılarında ASP.NET Core uygulaması çalıştırma

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Bu makalede Docker kapsayıcılarında bir ASP.NET Core uygulamasının nasıl çalıştırılacakları gösterilmektedir.

Windows Home Edition Hyper-V'yi desteklemez ve Docker için Hyper-V gereklidir.

ile dotnet publishkapsayıcılı bir .NET uygulaması hakkında bilgi için bkz. dotnet ile bir .NET uygulamasını kapsayıcıya alma yayımlama.

Core Docker görüntülerini ASP.NET

Bu öğretici için ASP.NET Core örnek uygulamasını indirip Docker kapsayıcılarında çalıştıracaksınız. Örnek hem Linux hem de Windows kapsayıcılarıyla çalışır.

Örnek Dockerfile, farklı kapsayıcılarda derlemek ve çalıştırmak için Docker çok aşamalı derleme özelliğini kullanır. Derleme ve çalıştırma kapsayıcıları, Microsoft tarafından Docker Hub'da sağlanan görüntülerden oluşturulur:

  • dotnet/sdk

    Örnek, uygulamayı oluşturmak için bu görüntüyü kullanır. Görüntü, Komut Satırı Araçları'nı (CLI) içeren .NET SDK'sını içerir. Görüntü yerel geliştirme, hata ayıklama ve birim testi için iyileştirilmiştir. Geliştirme ve derleme için yüklenen araçlar görüntüyü görece büyük hale getirir.

  • dotnet/aspnet

    Örnek, uygulamayı çalıştırmak için bu görüntüyü kullanır. Görüntü, ASP.NET Core çalışma zamanını ve kitaplıklarını içerir ve uygulamaları üretim ortamında çalıştırmak için en iyi duruma getirilmiştir. Dağıtım ve uygulama başlatma hızı için tasarlanan görüntü görece küçük olduğundan Docker Kayıt Defteri'nden Docker konağına kadar ağ performansı iyileştirilir. Kapsayıcıya yalnızca bir uygulamayı çalıştırmak için gereken ikili dosyalar ve içerik kopyalanır. İçerikler çalışmaya hazır olduğundan, uygulama başlangıcından en hızlı zamanı docker run etkinleştirir. Docker modelinde dinamik kod derlemesi gerekli değildir.

Önkoşullar

Örnek uygulamayı indirme

  • .NET Docker deposunu kopyalayarak örneği indirin:

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

Uygulamayı yerel olarak çalıştırma

  • dotnet-docker/samples/aspnetapp/aspnetapp konumundaki proje klasörüne gidin.

  • Uygulamayı yerel olarak derlemek ve çalıştırmak için aşağıdaki komutu çalıştırın:

    dotnet run
    
  • Uygulamayı test etmek http://localhost:<port> için tarayıcıda adresine gidin.

  • Uygulamayı durdurmak için komut isteminde Ctrl+C tuşlarına basın.

Linux kapsayıcısında veya Windows kapsayıcısında çalıştırma

  • Linux kapsayıcısında çalıştırmak için Sistem Tepsisi'nin Docker istemci simgesine sağ tıklayın ve Linux kapsayıcılarına geç'i seçin.

  • Bir Windows kapsayıcısında çalıştırmak için Sistem Tepsisi'nin Docker istemci simgesine sağ tıklayın ve Windows kapsayıcılarına geç'i seçin.

  • dotnet-docker/samples/aspnetapp konumunda Dockerfile klasörüne gidin.

  • Docker'da örneği derlemek ve çalıştırmak için aşağıdaki komutları çalıştırın:

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

    Komut build bağımsız değişkenleri:

    • Görüntüyü aspnetapp olarak adlandırın.
    • Geçerli klasörde (sonundaki nokta) Dockerfile dosyasını arayın.

    Çalıştırma komutu bağımsız değişkenleri:

    • Bir sahte TTY ayırın ve bağlı olmasa bile açık tutun. (ile aynı etki --interactive --tty.)
    • Kapsayıcı çıktığında otomatik olarak kaldırın.
    • Yerel makinede kapsayıcıdaki 8080 numaralı bağlantı noktasına eşleyin <port> .
    • Kapsayıcıya aspnetcore_sample adını verin.
    • aspnetapp görüntüsünü belirtin.
  • Uygulamayı test etmek http://localhost:<port> için tarayıcıda adresine gidin.

El ile derleme ve dağıtma

Bazı senaryolarda, bir uygulamayı çalışma zamanında gerekli olan varlıklarını kopyalayarak kapsayıcıya dağıtmak isteyebilirsiniz. Bu bölümde el ile nasıl dağıtılacağı gösterilmektedir.

  • dotnet-docker/samples/aspnetapp/aspnetapp konumundaki proje klasörüne gidin.

  • dotnet publish komutunu çalıştırın:

    dotnet publish -c Release -o published
    

    Komut bağımsız değişkenleri:

    • Uygulamayı sürüm modunda oluşturun (varsayılan hata ayıklama modudur).
    • Yayımlanan klasörde varlıkları oluşturun.
  • Uygulamayı çalıştırma.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Sayfayı görmek home için http://localhost:<port> adresine gidin.

El ile yayımlanan uygulamayı bir Docker kapsayıcısı içinde kullanmak için yeni bir Dockerfile oluşturun ve komutunu kullanarak docker build . bir görüntü oluşturun.

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

Yeni görüntüyü görmek için komutunu kullanın docker images .

The Dockerfile

Aşağıda, daha önce çalıştırdığınız komut tarafından docker build kullanılan Dockerfile dosyası yer alır. Derlemek ve dağıtmak için bu bölümde kullandığınız gibi kullanılır dotnet publish .

# 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"]

Yukarıdaki Dockerfile dosyasında *.csproj dosyalar ayrı katmanlar olarak kopyalanır ve geri yüklenir. docker build Komut bir görüntü oluşturduğunda yerleşik bir önbellek kullanır. Komut son çalıştırıldığından *.csproj docker build bu yana dosyalar değişmediyse, komutun dotnet restore yeniden çalıştırılması gerekmez. Bunun yerine, ilgili dotnet restore katman için yerleşik önbellek yeniden kullanılır. Daha fazla bilgi için bkz . Dockerfiles yazmak için en iyi yöntemler.

Ek kaynaklar

Sonraki adımlar

Örnek uygulamayı içeren Git deposu belgeleri de içerir. Depoda bulunan kaynaklara genel bakış için BENIOKU dosyasına bakın. Özellikle HTTPS'yi uygulamayı öğrenin:

Core Docker görüntülerini ASP.NET

Bu öğretici için ASP.NET Core örnek uygulamasını indirip Docker kapsayıcılarında çalıştıracaksınız. Örnek hem Linux hem de Windows kapsayıcılarıyla çalışır.

Örnek Dockerfile, farklı kapsayıcılarda derlemek ve çalıştırmak için Docker çok aşamalı derleme özelliğini kullanır. Derleme ve çalıştırma kapsayıcıları, Microsoft tarafından Docker Hub'da sağlanan görüntülerden oluşturulur:

  • dotnet/sdk

    Örnek, uygulamayı oluşturmak için bu görüntüyü kullanır. Görüntü, Komut Satırı Araçları'nı (CLI) içeren .NET SDK'sını içerir. Görüntü yerel geliştirme, hata ayıklama ve birim testi için iyileştirilmiştir. Geliştirme ve derleme için yüklenen araçlar görüntüyü görece büyük hale getirir.

  • dotnet/aspnet

    Örnek, uygulamayı çalıştırmak için bu görüntüyü kullanır. Görüntü, ASP.NET Core çalışma zamanını ve kitaplıklarını içerir ve uygulamaları üretim ortamında çalıştırmak için en iyi duruma getirilmiştir. Dağıtım ve uygulama başlatma hızı için tasarlanan görüntü görece küçük olduğundan Docker Kayıt Defteri'nden Docker konağına kadar ağ performansı iyileştirilir. Kapsayıcıya yalnızca bir uygulamayı çalıştırmak için gereken ikili dosyalar ve içerik kopyalanır. İçerikler çalışmaya hazır olduğundan, uygulama başlangıcından en hızlı zamanı docker run etkinleştirir. Docker modelinde dinamik kod derlemesi gerekli değildir.

Önkoşullar

Örnek uygulamayı indirme

  • .NET Docker deposunu kopyalayarak örneği indirin:

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

Uygulamayı yerel olarak çalıştırma

  • dotnet-docker/samples/aspnetapp/aspnetapp konumundaki proje klasörüne gidin.

  • Uygulamayı yerel olarak derlemek ve çalıştırmak için aşağıdaki komutu çalıştırın:

    dotnet run
    
  • Uygulamayı test etmek http://localhost:5000 için tarayıcıda adresine gidin.

  • Uygulamayı durdurmak için komut isteminde Ctrl+C tuşlarına basın.

Linux kapsayıcısında veya Windows kapsayıcısında çalıştırma

  • Linux kapsayıcısında çalıştırmak için Sistem Tepsisi'nin Docker istemci simgesine sağ tıklayın ve Linux kapsayıcılarına geç'i seçin.

  • Bir Windows kapsayıcısında çalıştırmak için Sistem Tepsisi'nin Docker istemci simgesine sağ tıklayın ve Windows kapsayıcılarına geç'i seçin.

  • dotnet-docker/samples/aspnetapp konumunda Dockerfile klasörüne gidin.

  • Docker'da örneği derlemek ve çalıştırmak için aşağıdaki komutları çalıştırın:

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

    Komut build bağımsız değişkenleri:

    • Görüntüyü aspnetapp olarak adlandırın.
    • Geçerli klasörde (sonundaki nokta) Dockerfile dosyasını arayın.

    Çalıştırma komutu bağımsız değişkenleri:

    • Bir sahte TTY ayırın ve bağlı olmasa bile açık tutun. (ile aynı etki --interactive --tty.)
    • Kapsayıcı çıktığında otomatik olarak kaldırın.
    • Yerel makinedeki 5000 numaralı bağlantı noktasını kapsayıcıdaki 80 numaralı bağlantı noktasına eşleyin.
    • Kapsayıcıya aspnetcore_sample adını verin.
    • aspnetapp görüntüsünü belirtin.
  • Uygulamayı test etmek http://localhost:5000 için tarayıcıda adresine gidin.

El ile derleme ve dağıtma

Bazı senaryolarda, bir uygulamayı çalışma zamanında gerekli olan varlıklarını kopyalayarak kapsayıcıya dağıtmak isteyebilirsiniz. Bu bölümde el ile nasıl dağıtılacağı gösterilmektedir.

  • dotnet-docker/samples/aspnetapp/aspnetapp konumundaki proje klasörüne gidin.

  • dotnet publish komutunu çalıştırın:

    dotnet publish -c Release -o published
    

    Komut bağımsız değişkenleri:

    • Uygulamayı sürüm modunda oluşturun (varsayılan hata ayıklama modudur).
    • Yayımlanan klasörde varlıkları oluşturun.
  • Uygulamayı çalıştırma.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Sayfayı görmek home için http://localhost:5000 adresine gidin.

El ile yayımlanan uygulamayı bir Docker kapsayıcısı içinde kullanmak için yeni bir Dockerfile oluşturun ve komutunu kullanarak docker build . bir görüntü oluşturun.

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

Yeni görüntüyü görmek için komutunu kullanın docker images .

The Dockerfile

Aşağıda, daha önce çalıştırdığınız komut tarafından docker build kullanılan Dockerfile dosyası yer alır. Derlemek ve dağıtmak için bu bölümde kullandığınız gibi kullanılır dotnet publish .

# 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"]

Yukarıdaki Dockerfile dosyasında *.csproj dosyalar ayrı katmanlar olarak kopyalanır ve geri yüklenir. docker build Komut bir görüntü oluşturduğunda yerleşik bir önbellek kullanır. Komut son çalıştırıldığından *.csproj docker build bu yana dosyalar değişmediyse, komutun dotnet restore yeniden çalıştırılması gerekmez. Bunun yerine, ilgili dotnet restore katman için yerleşik önbellek yeniden kullanılır. Daha fazla bilgi için bkz . Dockerfiles yazmak için en iyi yöntemler.

Ek kaynaklar

Sonraki adımlar

Örnek uygulamayı içeren Git deposu belgeleri de içerir. Depoda bulunan kaynaklara genel bakış için BENIOKU dosyasına bakın. Özellikle HTTPS'yi uygulamayı öğrenin:

Core Docker görüntülerini ASP.NET

Bu öğretici için ASP.NET Core örnek uygulamasını indirip Docker kapsayıcılarında çalıştıracaksınız. Örnek hem Linux hem de Windows kapsayıcılarıyla çalışır.

Örnek Dockerfile, farklı kapsayıcılarda derlemek ve çalıştırmak için Docker çok aşamalı derleme özelliğini kullanır. Derleme ve çalıştırma kapsayıcıları, Microsoft tarafından Docker Hub'da sağlanan görüntülerden oluşturulur:

  • dotnet/sdk

    Örnek, uygulamayı oluşturmak için bu görüntüyü kullanır. Görüntü, Komut Satırı Araçları'nı (CLI) içeren .NET SDK'sını içerir. Görüntü yerel geliştirme, hata ayıklama ve birim testi için iyileştirilmiştir. Geliştirme ve derleme için yüklenen araçlar görüntüyü görece büyük hale getirir.

  • dotnet/core/sdk

    Örnek, uygulamayı oluşturmak için bu görüntüyü kullanır. Görüntü, Komut Satırı Araçları'nı (CLI) içeren .NET Core SDK'sını içerir. Görüntü yerel geliştirme, hata ayıklama ve birim testi için iyileştirilmiştir. Geliştirme ve derleme için yüklenen araçlar görüntüyü görece büyük hale getirir.

  • dotnet/aspnet

    Örnek, uygulamayı çalıştırmak için bu görüntüyü kullanır. Görüntü, ASP.NET Core çalışma zamanını ve kitaplıklarını içerir ve uygulamaları üretim ortamında çalıştırmak için en iyi duruma getirilmiştir. Dağıtım ve uygulama başlatma hızı için tasarlanan görüntü görece küçük olduğundan Docker Kayıt Defteri'nden Docker konağına kadar ağ performansı iyileştirilir. Kapsayıcıya yalnızca bir uygulamayı çalıştırmak için gereken ikili dosyalar ve içerik kopyalanır. İçerikler çalışmaya hazır olduğundan, uygulama başlangıcından en hızlı zamanı docker run etkinleştirir. Docker modelinde dinamik kod derlemesi gerekli değildir.

  • dotnet/core/aspnet

    Örnek, uygulamayı çalıştırmak için bu görüntüyü kullanır. Görüntü, ASP.NET Core çalışma zamanını ve kitaplıklarını içerir ve uygulamaları üretim ortamında çalıştırmak için en iyi duruma getirilmiştir. Dağıtım ve uygulama başlatma hızı için tasarlanan görüntü görece küçük olduğundan Docker Kayıt Defteri'nden Docker konağına kadar ağ performansı iyileştirilir. Kapsayıcıya yalnızca bir uygulamayı çalıştırmak için gereken ikili dosyalar ve içerik kopyalanır. İçerikler çalışmaya hazır olduğundan, uygulama başlangıcından en hızlı zamanı docker run etkinleştirir. Docker modelinde dinamik kod derlemesi gerekli değildir.

Önkoşullar

Örnek uygulamayı indirme

  • .NET Docker deposunu kopyalayarak örneği indirin:

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

Uygulamayı yerel olarak çalıştırma

  • dotnet-docker/samples/aspnetapp/aspnetapp konumundaki proje klasörüne gidin.

  • Uygulamayı yerel olarak derlemek ve çalıştırmak için aşağıdaki komutu çalıştırın:

    dotnet run
    
  • Uygulamayı test etmek http://localhost:5000 için tarayıcıda adresine gidin.

  • Uygulamayı durdurmak için komut isteminde Ctrl+C tuşlarına basın.

Linux kapsayıcısında veya Windows kapsayıcısında çalıştırma

  • Linux kapsayıcısında çalıştırmak için Sistem Tepsisi'nin Docker istemci simgesine sağ tıklayın ve Linux kapsayıcılarına geç'i seçin.

  • Bir Windows kapsayıcısında çalıştırmak için Sistem Tepsisi'nin Docker istemci simgesine sağ tıklayın ve Windows kapsayıcılarına geç'i seçin.

  • dotnet-docker/samples/aspnetapp konumunda Dockerfile klasörüne gidin.

  • Docker'da örneği derlemek ve çalıştırmak için aşağıdaki komutları çalıştırın:

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

    Komut build bağımsız değişkenleri:

    • Görüntüyü aspnetapp olarak adlandırın.
    • Geçerli klasörde (sonundaki nokta) Dockerfile dosyasını arayın.

    Çalıştırma komutu bağımsız değişkenleri:

    • Bir sahte TTY ayırın ve bağlı olmasa bile açık tutun. (ile aynı etki --interactive --tty.)
    • Kapsayıcı çıktığında otomatik olarak kaldırın.
    • Yerel makinedeki 5000 numaralı bağlantı noktasını kapsayıcıdaki 80 numaralı bağlantı noktasına eşleyin.
    • Kapsayıcıya aspnetcore_sample adını verin.
    • aspnetapp görüntüsünü belirtin.
  • Uygulamayı test etmek http://localhost:5000 için tarayıcıda adresine gidin.

El ile derleme ve dağıtma

Bazı senaryolarda, bir uygulamayı çalışma zamanında gerekli olan varlıklarını kopyalayarak kapsayıcıya dağıtmak isteyebilirsiniz. Bu bölümde el ile nasıl dağıtılacağı gösterilmektedir.

  • dotnet-docker/samples/aspnetapp/aspnetapp konumundaki proje klasörüne gidin.

  • dotnet publish komutunu çalıştırın:

    dotnet publish -c Release -o published
    

    Komut bağımsız değişkenleri:

    • Uygulamayı sürüm modunda oluşturun (varsayılan hata ayıklama modudur).
    • Yayımlanan klasörde varlıkları oluşturun.
  • Uygulamayı çalıştırma.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Sayfayı görmek home için http://localhost:5000 adresine gidin.

El ile yayımlanan uygulamayı bir Docker kapsayıcısı içinde kullanmak için yeni bir Dockerfile oluşturun ve komutunu kullanarak docker build . bir görüntü oluşturun.

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

Yeni görüntüyü görmek için komutunu kullanın docker images .

The Dockerfile

Aşağıda, daha önce çalıştırdığınız komut tarafından docker build kullanılan Dockerfile dosyası yer alır. Derlemek ve dağıtmak için bu bölümde kullandığınız gibi kullanılır dotnet publish .

# 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"]

Yeni görüntüyü görmek için komutunu kullanın docker images .

The Dockerfile

Aşağıda, daha önce çalıştırdığınız komut tarafından docker build kullanılan Dockerfile dosyası yer alır. Derlemek ve dağıtmak için bu bölümde kullandığınız gibi kullanılır dotnet publish .

# 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"]

Yukarıdaki Dockerfile dosyasında *.csproj dosyalar ayrı katmanlar olarak kopyalanır ve geri yüklenir. docker build Komut bir görüntü oluşturduğunda yerleşik bir önbellek kullanır. Komut son çalıştırıldığından *.csproj docker build bu yana dosyalar değişmediyse, komutun dotnet restore yeniden çalıştırılması gerekmez. Bunun yerine, ilgili dotnet restore katman için yerleşik önbellek yeniden kullanılır. Daha fazla bilgi için bkz . Dockerfiles yazmak için en iyi yöntemler.

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

The Dockerfile

Aşağıda, daha önce çalıştırdığınız komut tarafından docker build kullanılan Dockerfile dosyası yer alır. Derlemek ve dağıtmak için bu bölümde kullandığınız gibi kullanılır dotnet publish .

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"]

Önceki Dockerfile dosyasında belirtildiği gibi dosyalar *.csproj ayrı katmanlar olarak kopyalanır ve geri yüklenir. docker build Komut bir görüntü oluşturduğunda yerleşik bir önbellek kullanır. Komut son çalıştırıldığından *.csproj docker build bu yana dosyalar değişmediyse, komutun dotnet restore yeniden çalıştırılması gerekmez. Bunun yerine, ilgili dotnet restore katman için yerleşik önbellek yeniden kullanılır. Daha fazla bilgi için bkz . Dockerfiles yazmak için en iyi yöntemler.

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

The Dockerfile

Aşağıda, daha önce çalıştırdığınız komut tarafından docker build kullanılan Dockerfile dosyası yer alır. Derlemek ve dağıtmak için bu bölümde kullandığınız gibi kullanılır dotnet publish .

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"]

Yukarıdaki Dockerfile dosyasında *.csproj dosyalar ayrı katmanlar olarak kopyalanır ve geri yüklenir. docker build Komut bir görüntü oluşturduğunda yerleşik bir önbellek kullanır. Komut son çalıştırıldığından *.csproj docker build bu yana dosyalar değişmediyse, komutun dotnet restore yeniden çalıştırılması gerekmez. Bunun yerine, ilgili dotnet restore katman için yerleşik önbellek yeniden kullanılır. Daha fazla bilgi için bkz . Dockerfiles yazmak için en iyi yöntemler.

Ek kaynaklar

Sonraki adımlar

Örnek uygulamayı içeren Git deposu belgeleri de içerir. Depoda bulunan kaynaklara genel bakış için BENIOKU dosyasına bakın. Özellikle HTTPS'yi uygulamayı öğrenin: