Hızlı Başlangıç: Visual Studio'da Docker
Visual Studio ile kapsayıcılı .NET, ASP.NET ve ASP.NET Core uygulamalarını kolayca derleyebilir, hatalarını ayıklayabilir ve çalıştırabilir ve bunları Azure Container Registry, Docker Hub, Azure Uygulaması Service veya kendi Container Registry'nizde yayımlayabilirsiniz. Bu makalede Azure Container Registry'de bir ASP.NET Core uygulaması yayımlayacağız.
Önkoşullar
- Docker Desktop
- Web Geliştirme, Azure Araçları iş yükü ve/veya .NET Core platformlar arası geliştirme iş yükü yüklü Visual Studio 2019
- .NET Core ile geliştirme için .NET Core Geliştirme Araçları
- Bir Azure aboneliği olan Azure Container Registry'de yayımlamak için. Ücretsiz deneme için kaydolun.
Yükleme ve ayarlama
Docker yüklemesi için öncelikle Windows için Docker Desktop: Yüklemeden önce bilinmesi gerekenler makalesinde yer alan bilgileri gözden geçirin. Ardından Docker Desktop'ı yükleyin.
Docker kapsayıcısına proje ekleme
ASP.NET Core Web App şablonunu kullanarak yeni bir proje oluşturun veya .NET Core yerine .NET Framework kullanmak istiyorsanız web uygulaması (.NET Framework) ASP.NET seçin.
Yeni web uygulaması oluştur ekranında Docker Desteğini Etkinleştir onay kutusunun seçili olduğundan emin olun.
Ekran görüntüsünde .NET Core gösterilmektedir; .NET Framework kullanıyorsanız, biraz farklı görünür.
İstediğiniz kapsayıcı türünü (Windows veya Linux) seçin ve Oluştur'a tıklayın.
Dockerfile'a genel bakış
Projede son Docker görüntüsü oluşturmaya yönelik bir Dockerfile oluşturulur. içindeki komutları anlamak için Dockerfile başvurusuna bakın.:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
Yukarıdaki Dockerfile, microsoft/aspnetcore görüntüsünü temel alır ve projenizi oluşturup kapsayıcıya ekleyerek temel görüntüyü değiştirme yönergelerini içerir. .NET Framework kullanıyorsanız temel görüntü farklı olacaktır.
Yeni proje iletişim kutusunun HTTPS için yapılandır onay kutusu işaretlendiğinde Dockerfile iki bağlantı noktasını kullanıma sunar. HTTP trafiği için bir bağlantı noktası kullanılır; diğer bağlantı noktası HTTPS için kullanılır. Onay kutusu işaretlenmemişse, HTTP trafiği için tek bir bağlantı noktası (80) kullanıma sunulur.
Hata Ayıklama
Araç çubuğundaki hata ayıklama açılan listesinden Docker'ı seçin ve uygulamada hata ayıklamaya başlayın. Sertifikaya güvenme hakkında istem içeren bir ileti görebilirsiniz; devam etmek için sertifikaya güvenmeyi seçin.
Çıktı penceresindeki Kapsayıcı Araçları seçeneği hangi eylemlerin gerçekleştiriliyor olduğunu gösterir. İlk kez temel görüntüyü indirmek biraz zaman alabilir, ancak sonraki çalıştırmalarda çok daha hızlıdır.
Not
Hata ayıklama için bağlantı noktalarını değiştirmeniz gerekiyorsa, bunu başlatma Ayarlar.json dosyasında yapabilirsiniz. Bkz. Kapsayıcı Başlatma Ayarlar.
Kapsayıcılar penceresi
Visual Studio 2019 sürüm 16.4 veya sonraki bir sürümüne sahipseniz, makinenizde çalışan kapsayıcıları ve kullanabileceğiniz görüntüleri görüntülemek için Kapsayıcılar penceresini kullanabilirsiniz.
IDE'deki arama kutusunu kullanarak Kapsayıcılar penceresini açın (kullanmak için Ctrl+Q tuşuna basın), yazın container
ve listeden Kapsayıcılar penceresini seçin.
Kapsayıcılar penceresini düzenleyicinin altında olduğu gibi uygun bir yere takarak ve pencere yerleştirme kılavuzlarını izleyerek bağlayabilirsiniz.
Pencerede kapsayıcınızı bulun ve ortam değişkenlerini, bağlantı noktası eşlemelerini, günlükleri ve dosya sistemini görüntülemek için her sekmede ilerleyin.
Daha fazla bilgi için bkz . Kapsayıcılar penceresini kullanma.
Docker görüntülerini yayımlama
Uygulamanın geliştirme ve hata ayıklama döngüsü tamamlandıktan sonra uygulamanın üretim görüntüsünü oluşturabilirsiniz.
Yapılandırma açılan listesini Yayınla ve uygulamayı derle olarak değiştirin.
Çözüm Gezgini'da projenize sağ tıklayın ve Yayımla'yı seçin.
Yayımla iletişim kutusunda Docker Container Registry sekmesini seçin.
Yeni Azure Container Registry Oluştur'u seçin.
Yeni Azure Container Registry oluşturma bölümünde istediğiniz değerleri doldurun.
Ayar Önerilen değer Açıklama DNS Ön Eki Genel olarak benzersiz bir ad Kapsayıcı kayıt defterinizi benzersiz olarak tanımlayan ad. Abonelik Aboneliğinizi seçin Kullanılacak Azure aboneliği. Kaynak Grubu myResourceGroup Kapsayıcı kayıt defterinizin oluşturulacağı kaynak grubunun adı. Yeni kaynak grubu oluşturmak Yeni'yi seçin. SKU Standart Kapsayıcı kayıt defterinin hizmet katmanı Kayıt Defteri Konumu Size yakın bir konum Size yakın bir bölgede veya kapsayıcı kayıt defterinizi kullanacak diğer hizmetlerin yakınında bir Konum seçin. Oluştur’a tıklayın. Yayımla iletişim kutusu artık oluşturulan kayıt defterini gösterir.
Kapsayıcı görüntünüzü Azure'da yeni oluşturulan kayıt defterinde yayımlama işlemini tamamlamak için Son'u seçin.
Sonraki Adımlar
Artık kapsayıcıyı kayıt defterinden Docker görüntülerini çalıştırabilen herhangi bir konağa (örneğin Azure Container Instances) çekebilirsiniz.
Visual Studio ile kapsayıcılı .NET, ASP.NET ve ASP.NET Core uygulamalarını kolayca derleyebilir, hatalarını ayıklayabilir ve çalıştırabilir ve bunları Azure Container Registry, Docker Hub, Azure Uygulaması Service veya kendi Container Registry'nizde yayımlayabilirsiniz. Bu makalede, Azure Container Registry'de bir ASP.NET Core uygulaması yayımlarsınız.
Önkoşullar
- Docker Desktop
- Web Geliştirme, Azure Araçları iş yükü ve/veya .NET masaüstü geliştirme iş yükü yüklü Visual Studio 2022
- Bir Azure aboneliği olan Azure Container Registry'de yayımlamak için. Ücretsiz deneme için kaydolun.
Yükleme ve ayarlama
Docker yüklemesi için öncelikle Windows için Docker Desktop: Yüklemeden önce bilinmesi gerekenler makalesinde yer alan bilgileri gözden geçirin. Ardından Docker Desktop'ı yükleyin.
Docker kapsayıcısına proje ekleme
Visual Studio projesini oluşturmadan önce, Docker Desktop'ın Visual Studio projenizde kullanmayı planladığınız kapsayıcı türünü (Windows veya Linux) çalıştırdığından emin olun.
Docker Desktop tarafından kullanılan kapsayıcı türünü değiştirmek için Görev Çubuğunda Docker simgesine (balina) sağ tıklayın ve Linux kapsayıcılarına geç veya Windows kapsayıcılarına geçiş yap'ı seçin.
Uyarı
Visual Studio projesini oluşturduktan sonra kapsayıcı türünü değiştirirseniz Docker görüntü dosyaları yüklenemeyebilir.
ASP.NET Core Web App şablonunu kullanarak yeni bir proje oluşturun veya .NET Core yerine .NET Framework kullanmak istiyorsanız web uygulaması (.NET Framework) ASP.NET seçin.
Yeni web uygulaması oluştur ekranında Docker Desteğini Etkinleştir onay kutusunun seçili olduğundan emin olun.
Ekran görüntüsü, .NET 8.0 ile en son sürümü gösterir. .NET Framework kullanıyorsanız, iletişim kutusu biraz farklı görünür.
İstediğiniz kapsayıcı türünü (Windows veya Linux) seçin ve Oluştur'u seçin.
Dockerfile'a genel bakış
Visual Studio, projenizde son docker görüntüsünün nasıl oluşturulacağını gösteren bir Dockerfile oluşturur. Daha fazla bilgi için Dockerfile'da kullanılan komutlarla ilgili ayrıntılar için Dockerfile başvurusuna bakın.
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Yukarıdaki Dockerfile, Microsoft Container Registry (MCR) .NET 8 görüntüsünü temel alır ve adlı MyWebApp
projeyi oluşturup kapsayıcıya ekleyerek temel görüntüyü değiştirme yönergelerini içerir. .NET Framework kullanıyorsanız temel görüntü farklıdır.
Yeni proje iletişim kutusunun HTTPS için yapılandır onay kutusu işaretlendiğinde Dockerfile iki bağlantı noktasını kullanıma sunar. HTTP trafiği için bir bağlantı noktası kullanılır; diğer bağlantı noktası HTTPS için kullanılır. Onay kutusu işaretlenmemişse, HTTP trafiği için tek bir bağlantı noktası (80) kullanıma sunulur.
Visual Studio 2022 sürüm 17.7 veya üzeri ile .NET 8'i hedefleyebilirsiniz. Bu durumda, uygulamanızı yükseltilmiş izinler yerine normal bir kullanıcı olarak daha güvenli bir şekilde çalıştırabilme avantajına sahip olursunuz. .NET 8 projeleri için Visual Studio tarafından oluşturulan varsayılan Dockerfile, normal kullanıcı olarak çalışacak şekilde yapılandırılır. Mevcut bir projede bu davranışı etkinleştirmek için temel görüntüdeki Dockerfile dosyasına satırı USER app
ekleyin. Ayrıca, 80 numaralı bağlantı noktası normal kullanıcılar için kısıtlandığından, 80 ve 443 yerine 8080 ve 8081 numaralı bağlantı noktalarını kullanıma sunar. 8080 numaralı bağlantı noktası HTTP trafiği için, 8081 numaralı bağlantı noktası ise HTTPS için kullanılır. Normal bir kullanıcı olarak çalıştırmak için kapsayıcının .NET 8 temel görüntüsü kullanması ve uygulamanın .NET 8 uygulaması olarak çalışması gerekir. Doğru yapılandırıldığında, Dockerfile'ınız aşağıdaki örnekte olduğu gibi kod içermelidir:
FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
Hata Ayıklama
Araç çubuğundaki hata ayıklama açılan listesinden Docker'ı seçin ve uygulamada hata ayıklamaya başlayın. Sertifikaya güvenme hakkında istem içeren bir ileti görebilirsiniz; devam etmek için sertifikaya güvenmeyi seçin.
Çıktı penceresindeki Kapsayıcı Araçları seçeneği hangi eylemlerin gerçekleştiriliyor olduğunu gösterir. İlk kez temel görüntüyü indirmek biraz zaman alabilir, ancak sonraki çalıştırmalarda daha hızlıdır.
Derleme tamamlandıktan sonra tarayıcı açılır ve uygulamanızın giriş sayfası görüntülenir. Tarayıcı adres çubuğunda hata ayıklama için URL'yi localhost
ve bağlantı noktası numarasını görebilirsiniz.
Not
Hata ayıklama için bağlantı noktalarını değiştirmeniz gerekiyorsa, bunu dosyada launchSettings.json
yapabilirsiniz. Bkz. Kapsayıcı Başlatma Ayarlar.
Kapsayıcılar penceresi
Makinenizde çalışan kapsayıcıları ve kullanabileceğiniz diğer görüntüleri görüntülemek için Kapsayıcılar penceresini kullanabilirsiniz.
IDE'deki arama kutusunu kullanarak Kapsayıcılar penceresini açın (kullanmak için Ctrl+Q tuşuna basın), yazın container
ve listeden Kapsayıcılar penceresini seçin.
Kapsayıcılar penceresini düzenleyicinin altında olduğu gibi uygun bir yere takarak ve pencere yerleştirme kılavuzlarını izleyerek bağlayabilirsiniz.
Pencerede kapsayıcınızı bulun ve ortam değişkenlerini, bağlantı noktası eşlemelerini, günlükleri ve dosya sistemini görüntülemek için her sekmede ilerleyin.
Daha fazla bilgi için bkz . Kapsayıcılar penceresini kullanma.
Docker görüntülerini yayımlama
Uygulamanın geliştirme ve hata ayıklama döngüsü tamamlandıktan sonra uygulamanın üretim görüntüsünü oluşturabilirsiniz.
Yapılandırma açılan listesini Yayınla ve uygulamayı derle olarak değiştirin.
Çözüm Gezgini'da projenize sağ tıklayın ve Yayımla'yı seçin.
Yayımla iletişim kutusunda Docker Container Registry sekmesini seçin.
Yeni Azure Container Registry Oluştur'u seçin.
Yeni Azure Container Registry oluşturma bölümünde istediğiniz değerleri doldurun.
Ayar Önerilen değer Açıklama DNS Ön Eki Genel olarak benzersiz bir ad Kapsayıcı kayıt defterinizi benzersiz olarak tanımlayan ad. Abonelik Aboneliğinizi seçin Kullanılacak Azure aboneliği. Kaynak Grubu myResourceGroup Kapsayıcı kayıt defterinizin oluşturulacağı kaynak grubunun adı. Yeni kaynak grubu oluşturmak Yeni'yi seçin. SKU Standart Kapsayıcı kayıt defterinin hizmet katmanı Kayıt Defteri Konumu Size yakın bir konum Size yakın bir bölgede veya kapsayıcı kayıt defterinizi kullanabilecek diğer hizmetlerin yakınında bir Konum seçin. Oluştur'u belirleyin. Yayımla iletişim kutusu artık oluşturulan kayıt defterini gösterir.
Kapsayıcı görüntünüzü Azure'da yeni oluşturulan kayıt defterinde yayımlama işlemini tamamlamak için Son'u seçin.
Sonraki adımlar
Artık kapsayıcıyı kayıt defterinden Docker görüntülerini çalıştırabilen herhangi bir konağa (örneğin Azure Container Instances) çekebilirsiniz.