Docker kapsayıcılarında ASP.NET Core uygulaması çalıştırma
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.
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 publish
kapsayı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
Docker istemcisi 18.03 veya üzeri
Örnek uygulamayı indirme
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
- dotnet publish ile bir .NET uygulamasını kapsayıcıya alma
- Docker build komutu
- Docker run komutu
- ASP.NET Core Docker örneği (Bu öğreticide kullanılan örnek.)
- ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma
- Visual Studio Docker Araçları ile çalışma
- Visual Studio Code ile hata ayıklama
- Docker ve küçük kapsayıcıları kullanan GC
- System.IO.IOException: Inotify örneği sayısıyla ilgili yapılandırılan kullanıcı sınırına (128) ulaşıldı
- Docker görüntü güncelleştirmeleri
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
Docker istemcisi 18.03 veya üzeri
Örnek uygulamayı indirme
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
- dotnet publish ile bir .NET uygulamasını kapsayıcıya alma
- Docker build komutu
- Docker run komutu
- ASP.NET Core Docker örneği (Bu öğreticide kullanılan örnek.)
- ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma
- Visual Studio Docker Araçları ile çalışma
- Visual Studio Code ile hata ayıklama
- Docker ve küçük kapsayıcıları kullanan GC
- System.IO.IOException: Inotify örneği sayısıyla ilgili yapılandırılan kullanıcı sınırına (128) ulaşıldı
- Docker görüntü güncelleştirmeleri
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
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
- dotnet publish ile bir .NET uygulamasını kapsayıcıya alma
- Docker build komutu
- Docker run komutu
- ASP.NET Core Docker örneği (Bu öğreticide kullanılan örnek.)
- ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma
- Visual Studio Docker Araçları ile çalışma
- Visual Studio Code ile hata ayıklama
- Docker ve küçük kapsayıcıları kullanan GC
- System.IO.IOException: Inotify örneği sayısıyla ilgili yapılandırılan kullanıcı sınırına (128) ulaşıldı
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:
ASP.NET Core