Aracılığıyla paylaş


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 App Service veya kendi Container Registry'nizde yayımlayabilirsiniz. Bu makalede Azure Container Registry'de bir ASP.NET Core uygulaması yayımlayacağız.

Önkoşullar

Yükleme ve kurulum

Docker yüklemesi için önce Windows için Docker Desktopdaki bilgileri gözden geçirin:yüklemeden önce bilmeniz gerekenler. Ardından Docker Desktopyükleyin.

Docker kapsayıcısına proje ekleme

  1. ASP.NET Core Web App şablonunu kullanarak yeni bir proje oluşturun veya .NET Core yerine .NET Framework kullanmak istiyorsanız ASP.NET Web Uygulaması (.NET Framework)seçin.

  2. yeni web uygulaması oluştur ekranında Docker Desteği Etkinleştir onay kutusunun seçili olduğundan emin olun.

    Docker Desteğini Etkinleştir onay kutusunun ekran görüntüsü.

    Ekran görüntüsünde .NET Core gösterilmektedir; .NET Framework kullanıyorsanız, biraz farklı görünür.

  3. İstediğiniz kapsayıcı türünü seçin (Windows veya Linux) ve Oluşturöğesine tıklayın.

Dockerfile'a genel bakış

Dockerfile, son Docker görüntüsü oluşturma tarifi projede oluşturulur. Dockerfile içindeki komutları anlamak amacıyla Dockerfile referansına başvurun.

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 dotnet/core/aspnet 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ştiğini 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 launchSettings.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 +basın), containeryazın ve listeden Kapsayıcılar penceresini seçin.

Kapsayıcıları penceresini, düzenleyicinin altı gibi uygun bir yere, pencere yerleştirme kılavuzlarını takip ederek ve konumunu değiştirerek monte edebilirsiniz.

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.

kapsayıcılar penceresinin ekran görüntüsü .

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.

  1. Yapılandırma açılan listesini Sürüm olarak değiştirin ve uygulamayı oluşturun.

  2. çözüm gezgini projenize sağ tıklayın ve Yayımla'ni seçin.

  3. Yayımla iletişim kutusunda Docker Container Registry sekmesini seçin.

    Yayımla iletişim kutusunun ekran görüntüsü - Docker Container Registry'yi seçin.

  4. yeni Azure Container Registry oluştur seçin.

    Yayımla iletişim kutusunun ekran görüntüsü - Yeni Azure kapsayıcı kayıt defteri oluştur'u seçin.

  5. Yeni bir Azure Container Registry oluşturmaalanına istediğiniz değerleri doldurun.

    Ayarlar Önerilen değer Açıklama
    DNS Ön Ek Genel olarak benzersiz ad Kapsayıcı kayıt defterinizi benzersiz olarak tanımlayan bir 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 bir kaynak grubu oluşturmak için Yeni'i seçin.
    SKU Standart Kapsayıcı kayıt defterinin hizmet katmanı
    Kayıt Defteri Konumu Size yakın bir konum Size yakın veya kapsayıcı kayıt defterinizi kullanacak diğer hizmetlerin yakınında bir bölgede konum seçin.

    Visual Studio'nun Azure Container Registry oluştur iletişim kutusunun ekran görüntüsü.

  6. Oluşturöğesini tıklayın. Yayımla iletişim kutusu artık oluşturulan kayıt defterini gösterir.

    Azure Container Registry'nin oluşturulduğunu gösteren Yayımla iletişim kutusunun ekran görüntüsü.

  7. Kapsayıcı görüntünüzü Azure'da yeni oluşturulan kayıt defterinde yayımlama işlemini tamamlamak için Son'ni seçin.

    Başarılı yayımlamayı gösteren ekran görüntüsü.

Sonraki Adımlar

Artık kapsayıcıyı, Docker görüntülerini çalıştırabilen herhangi bir konağa kayıt defterinden çekebilirsiniz; örneğin Azure Container Instances .

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 App 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

Yükleme ve kurulum

Docker yüklemesi için önce Windows için Docker Desktopdaki bilgileri gözden geçirin:yüklemeden önce bilmeniz gerekenler. Ardından Docker Desktopyükleyin.

Docker kapsayıcısına proje ekleme

  1. 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çiş 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.

  2. ASP.NET Core Web App şablonunu kullanarak yeni bir proje oluşturun veya .NET Core yerine .NET Framework kullanmak istiyorsanız ASP.NET Web Uygulaması (.NET Framework)seçin.

  3. yeni web uygulaması oluştur ekranında Docker Desteği Etkinleştir onay kutusunun seçili olduğundan emin olun.

    Docker Desteğini Etkinleştir onay kutusunun ekran görüntüsü.

    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.

  4. İstediğiniz kapsayıcı türünü (Windows veya Linux) seçin ve Oluşturöğesini 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 dosyasında kullanılan komutlar hakkında ayrıntılı bilgiye Dockerfile başvuru üzerinden 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.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
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

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
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 MyWebApp adlı projeyi oluşturup kapsayıcıya ekleyerek temel görüntüyü değiştirmeye yönelik yönergeler 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 8hedefleyebilirsiniz. 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. Var olan bir projede bu davranışı etkinleştirmek için temel görüntüdeki Dockerfile USER app satırını 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ştiğini 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 localhost URL'sini ve bağlantı noktası numarasını görebilirsiniz.

Not

Hata ayıklama için bağlantı noktalarını değiştirmeniz gerekiyorsa, bunu launchSettings.json dosyasında yapabilirsiniz. Bkz. Kapsayıcı Başlatma Ayarları.

Kapsayıcılar penceresi

Makinenizde çalışan kapsayıcıları ve kullanılabilir 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 +basın), containeryazın ve listeden Kapsayıcılar penceresini seçin.

Kapsayıcıları penceresini, düzenleyicinin altı gibi uygun bir yere, pencere yerleştirme kılavuzlarını takip ederek ve konumunu değiştirerek monte edebilirsiniz.

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.

kapsayıcılar penceresinin ekran görüntüsü .

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.

  1. Yapılandırma açılan listesini Sürüm olarak değiştirin ve uygulamayı oluşturun.

  2. çözüm gezgini projenize sağ tıklayın ve Yayımla'ni seçin.

  3. Yayımla iletişim kutusunda Docker Container Registry sekmesini seçin.

    Yayımla iletişim kutusunun ekran görüntüsü - Docker Container Registry'yi seçin.

  4. yeni Azure Container Registry oluştur seçin.

    Yayımla iletişim kutusunun ekran görüntüsü - Yeni Azure kapsayıcı kayıt defteri oluştur'u seçin.

  5. Yeni bir Azure Container Registry oluşturmaalanına istediğiniz değerleri doldurun.

    Ayarlar Önerilen değer Açıklama
    DNS Ön Ek Genel olarak benzersiz ad Kapsayıcı kayıt defterinizi benzersiz olarak tanımlayan bir 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 bir kaynak grubu oluşturmak için Yeni'i seçin.
    SKU Standart Kapsayıcı kayıt defterinin hizmet katmanı
    Kayıt Defteri Konumu Size yakın bir konum Size yakın veya kapsayıcı kayıt defterinizi kullanabilecek diğer hizmetlerin yakınında bir bölgede konum seçin.

    Visual Studio'nun Azure Container Registry oluştur iletişim kutusunun ekran görüntüsü.

  6. 'ı seçin,oluşturun. Yayımla iletişim kutusu artık oluşturulan kayıt defterini gösterir.

    Azure Container Registry'nin oluşturulduğunu gösteren Yayımla iletişim kutusunun ekran görüntüsü.

  7. Kapsayıcı görüntünüzü Azure'da yeni oluşturulan kayıt defterinde yayımlama işlemini tamamlamak için Son'ni seçin.

    başarılı yayımlamayı gösteren ekran görüntüsü .

Sonraki adımlar

Artık kapsayıcıyı, Docker görüntülerini çalıştırabilen herhangi bir konağa kayıt defterinden çekebilirsiniz; örneğin Azure Container Instances .

Ek kaynaklar