Aracılığıyla paylaş


Hızlı Başlangıç: Visual Studio'da Kapsayıcı Araçları

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

Önkoşullar

Yükleme ve kurulum

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.

Yükleme ve kurulum

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.

Podman'ı kapsayıcı platformu olarak kullanmak için Windows için Podman Desktop'ı indirin ve ardından Podman makinesini başlatmak ve çalıştırmak için Windows için Podman öğreticisini izleyin.

Kapsayıcıya 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ç 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.

  3. Yeni web uygulaması oluştur ekranında Kapsayıcı desteğini etkinleştir onay kutusunun seçili olduğundan emin olun.

    Kapsayıcı 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.

  4. İ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 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 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 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 syndicates kapsayıcı kataloğu .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ş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 veya 8080) kullanıma sunulur.

.NET 8 ve üzerini hedeflerken, uygulamanızı yükseltilmiş izinlerle değil 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 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

.NET 8 ve üzeri için varsayılan şablonlar, normal kullanıcının kimliği için ortam değişkenini APP_UID kullanır.

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 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 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 containerve 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.

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çılır listesini Release olarak değiştirin ve uygulamayı derleyin.

  2. Çözüm Gezgini'nde projenize sağ tıklayın ve Yayımla'yı 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 Container Registry oluştur'u seçin.

  5. Yeni Azure Container Registry oluşturma bölümünde istediğiniz değerleri doldurun.

    Ayarlar Önerilen değer Açıklama
    DNS Ön Eki 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 (Kaynak Grubum) Kapsayıcı kayıt defterinizin oluşturulacağı kaynak grubunun adı. Yeni bir kaynak grubu oluşturmak için 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 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. Oluştur'u seçin. 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'u 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 .

Kapsayıcıya 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ç 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.

  3. Yeni web uygulaması oluştur ekranında Kapsayıcı Desteğini etkinleştir onay kutusunun seçili olduğundan emin olun.

    Kapsayıcı 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.

  4. İ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 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 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 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 syndicates kapsayıcı kataloğu .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ştirmeye yönelik yönergeler içerir.

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 veya 8080) kullanıma sunulur.

.NET 8 ve üzerini hedeflerken, uygulamanızı yükseltilmiş izinlerle değil 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 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Varsayılan şablonlar, normal kullanıcının kimliği için ortam değişkenini APP_UID kullanır.

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 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 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 containerve 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.

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çılır listesini Release olarak değiştirin ve uygulamayı derleyin.

  2. Çözüm Gezgini'nde projenize sağ tıklayın ve Yayımla'yı 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 Container Registry oluştur'u seçin.

  5. Yeni Azure Container Registry oluşturma bölümünde istediğiniz değerleri doldurun.

    Ayarlar Önerilen değer Açıklama
    DNS Ön Eki 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 (Kaynak Grubum) Kapsayıcı kayıt defterinizin oluşturulacağı kaynak grubunun adı. Yeni bir kaynak grubu oluşturmak için 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 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. Oluştur'u seçin. 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'u 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