Aracılığıyla paylaş


Kapsayıcılar için destek ekleme

ASP.NET web projeleri ve diğerleri gibi desteklenen Visual Studio proje türlerinde Docker kapsayıcıları için destek ekleyebilirsiniz. Visual Studio sürümünüzde desteklenen proje türleri hakkında bilgi için genel bakışa bakın.

ASP.NET web projeleri ve diğerleri gibi desteklenen Visual Studio proje türlerine Docker veya Podman kapsayıcıları için destek ekleyebilirsiniz. Visual Studio sürümünüzde desteklenen proje türleri hakkında bilgi için genel bakışa bakın.

Önkoşullar

Önkoşullar

Proje oluştururken kapsayıcı desteği ekleme

Aşağıdaki ekran görüntüsünde gösterildiği gibi, yeni proje oluştururken kapsayıcı desteğini etkinleştir'i seçerek proje oluşturma sırasında kapsayıcılar için desteği etkinleştirebilirsiniz:

Visual Studio'da yeni ASP.NET Core web uygulaması için kapsayıcı desteğini etkinleştirmeyi gösteren ekran görüntüsü.

Uyarı

.NET Framework projeleri için (.NET Core değil), yalnızca Windows kapsayıcıları kullanılabilir.

Uyarı

tr-TR: Tam .NET Framework konsol proje şablonunu kullanıyorsanız, proje oluşturulduktan sonra desteklenen seçenek Konteyner Orchestrator desteği ekle seçeneğidir ve Service Fabric veya Docker Compose'u kullanma seçeneklerini içermektedir. Proje oluşturma sırasında ve düzenleme olmaksızın tek bir proje için Docker desteği ekleme seçenekleri sunulmamaktadır.

Uyarı

Visual Studio'nun geçerli sürümünde .NET Framework kapsayıcıları desteği sona ermektedir. .NET Framework kapsayıcıları Visual Studio 2022 17.14'e kadar desteklendi.

Mevcut projeye kapsayıcı desteği ekleme

Çözüm Gezgini'nde>Ekle'yiseçerek mevcut projeye Docker desteği ekleyebilirsiniz. Kapsayıcı Desteği Ekle > ve Kapsayıcı Düzenleyici Desteği Ekle > komutları, aşağıdaki ekran görüntüsünde gösterildiği gibi Çözüm Gezgini'ndeki ASP.NET Core projesi için proje düğümünün sağ tıklama menüsünde (veya bağlam menüsünde) bulunur:

Visual Studio'da Kapsayıcı Desteği Ekle menü seçeneğini gösteren ekran görüntüsü.

Kapsayıcı derleme türünü ve diğer seçenekleri seçin

.NET 7 veya sonraki bir projeye kapsayıcı desteği eklediğinizde veya etkinleştirdiğinizde, Visual Studio size işletim sistemi (Linux veya Windows) seçeneğinin yanında Dockerfile veya .NET SDK'sı gibi kapsayıcı derleme türünü de seçme olanağı sağlayan Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösterir.

Kapsayıcı Görüntü Dağıtımını ve Kapsayıcı Derleme Bağlamını da belirtebilirsiniz.

Kapsayıcı desteği eklemeye yönelik Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösteren ekran görüntüsü.

Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı türü olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir.

Aşağıdaki görüntüler kullanılabilir:

Windows:

  • Windows Nano Server (önerilen, yalnızca 8.0 ve üzeri sürümlerde kullanılabilir, Yerel Zamanında Derleme (AOT) dağıtım projeleri için önceden ayarlanmış değildir)
  • Windows Server Core (yalnızca 8.0 ve üzeri sürümlerde kullanılabilir)

Linux:

  • Varsayılan (Debian, ancak etiket hedef .NET sürümünüzle eşleşir)
  • Debian
  • Ubuntu
  • İşlenmiş Ubuntu
  • Alpine

Uyarı

Chiseled Ubuntu görüntüsünü temel alan ve Yerel Anında Çalıştırma (AOT) dağıtımı kullanan kapsayıcılar sadece Hızlı Modda hata ayıklanabilir. Bkz. Visual Studio'da Docker kapsayıcılarını özelleştirme.

Kapsayıcı Derleme Bağlamı, docker build veya podman build için kullanılan klasörü belirtir. Bkz. Docker derleme bağlamı veya Podman derlemesi. Varsayılan, önerilen çözüm klasörüdür. Derleme için gereken tüm dosyaların bu klasörün altında olması gerekir; proje klasörünü veya başka bir klasörü seçerseniz bu durum geçerli değildir.

Dockerfile konteyner derleme türü

Dockerfile kapsayıcı derleme türünü seçerseniz, Visual Studio aşağıdakini projeye ekler:

  • Dockerfile dosyası
  • bir dosya .dockerignore
  • Microsoft.VisualStudio.Azure.Containers.Tools.Targets için NuGet paketi referansı

Eklediğiniz Dockerfile aşağıdaki koda benzer. Bu örnekte proje WebApplication-Docker olarak adlandırıldı ve Linux kapsayıcılarını seçtiniz.

# 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 ["WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj", "WebApplication15-AddContainerSupport/"]
RUN dotnet restore "./WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj"
COPY . .
WORKDIR "/src/WebApplication15-AddContainerSupport"
RUN dotnet build "./WebApplication15-AddContainerSupport.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 "./WebApplication15-AddContainerSupport.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", "WebApplication15-AddContainerSupport.dll"]

.NET SDK kapsayıcı derleme türü

Kapsayıcı derlemeleri için .NET SDK'sı yerleşik desteğini kullanabilirsiniz; bu da Dockerfile'a ihtiyacınız olmadığı anlamına gelir; bkz . Dotnet publish ile bir .NET uygulamasını kapsayıcıya alma. Bunun yerine, proje dosyasındaKI MSBuild özelliklerini kullanarak kapsayıcılarınızı yapılandırırsınız ve Visual Studio ile kapsayıcıları başlatma ayarları .jsonbir yapılandırma dosyasında kodlanır.

Kapsayıcı derleme türü olarak seçilen .NET SDK'sı ile Docker desteği eklemeye yönelik Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösteren ekran görüntüsü.

Burada, Dockerfile yerine .NET SDK'sının kapsayıcı yönetimini kullanmak için kapsayıcı derleme türü olarak .NET SDK'yı seçin.

Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir. Kullanılabilir görüntülerin listesi için önceki bölüme bakın.

launchSettings.json içindeki .NET SDK kapsayıcı derleme girdisi aşağıdaki koda benzer:

"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}

.NET SDK'sı, kapsayıcı temel görüntüsü ve ayarlanacağı ortam değişkenleri gibi dockerfile içinde kodlanmış olabilecek bazı ayarları yönetir. Kapsayıcı yapılandırması için proje dosyasındaki kullanılabilir ayarlar Kapsayıcınızı özelleştirme bölümünde listelenir. Örneğin , Container Image Distro özelliği olarak ContainerBaseImage proje dosyasına kaydedilir. Daha sonra proje dosyasını düzenleyerek değiştirebilirsiniz.

<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>

Kapsayıcı derleme türünü ve diğer seçenekleri seçin

Bir .NET 7 veya sonraki bir projeye Docker desteği eklediğinizde veya etkinleştirdiğinizde, Visual Studio size işletim sistemi (Linux veya Windows) seçeneği sunan Kapsayıcı yapı iskelesi seçenekleri iletişim kutusunu, aynı zamanda Dockerfile veya .NET SDK'sı gibi kapsayıcı derleme türünü seçme olanağını gösterir. Bu iletişim kutusu .NET Framework projelerinde görünmez.

17.11 ve sonraki sürümlerde Kapsayıcı Görüntüsü Dağıtımı ve Docker Derleme Bağlamı'nı da belirtebilirsiniz.

Docker desteği eklemeye yönelik Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösteren ekran görüntüsü.

Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı türü olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir.

Aşağıdaki görüntüler kullanılabilir:

Windows:

  • Windows Nano Server (önerilen, yalnızca 8.0 ve üzeri sürümlerde kullanılabilir, Yerel Zamanında Derleme (AOT) dağıtım projeleri için önceden ayarlanmış değildir)
  • Windows Server Core (yalnızca 8.0 ve üzeri sürümlerde kullanılabilir)

Linux:

  • Varsayılan (Debian, ancak etiket değeri "8.0")
  • Debian
  • Ubuntu
  • İşlenmiş Ubuntu
  • Alpine

Uyarı

Chiseled Ubuntu görüntüsünü temel alan ve Yerel Anında Çalıştırma (AOT) dağıtımı kullanan kapsayıcılar sadece Hızlı Modda hata ayıklanabilir. Bkz. Visual Studio'da Docker kapsayıcılarını özelleştirme.

Docker Derleme Bağlamı , Docker derlemesi için kullanılan klasörü belirtir. Bkz. Docker derleme bağlamı. Varsayılan, önerilen çözüm klasörüdür. Derleme için gereken tüm dosyaların bu klasörün altında olması gerekir; proje klasörünü veya başka bir klasörü seçerseniz bu durum geçerli değildir.

Dockerfile konteyner derleme türü

Dockerfile kapsayıcı derleme türünü seçerseniz, Visual Studio aşağıdakini projeye ekler:

  • Dockerfile dosyası
  • bir dosya .dockerignore
  • Microsoft.VisualStudio.Azure.Containers.Tools.Targets için NuGet paketi referansı

Eklediğiniz Dockerfile aşağıdaki koda benzer. Bu örnekte proje WebApplication-Docker olarak adlandırıldı ve Linux kapsayıcılarını seçtiniz.

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]

.NET SDK kapsayıcı derleme türü

Visual Studio 2022 17.9 ve üzeri .NET 7 SDK yüklüyken, .NET 6 veya üzerini hedefleyen ASP.NET Core projelerinde. Kapsayıcı derlemeleri için .NET SDK'nın yerleşik desteğini kullanma seçeneğiniz vardır; bu da Dockerfile'a ihtiyacınız olmadığı anlamına gelir; bkz . Dotnet publish ile bir .NET uygulamasını kapsayıcıya alma. Bunun yerine, proje dosyasındaKI MSBuild özelliklerini kullanarak kapsayıcılarınızı yapılandırırsınız ve Visual Studio ile kapsayıcıları başlatma ayarları .jsonbir yapılandırma dosyasında kodlanır.

Kapsayıcı derleme türü olarak seçilen .NET SDK'sı ile Docker desteği eklemeye yönelik Kapsayıcı İskelesi Seçenekleri iletişim kutusunu gösteren ekran görüntüsü.

Burada, Dockerfile yerine .NET SDK'sının kapsayıcı yönetimini kullanmak için kapsayıcı derleme türü olarak .NET SDK'yı seçin.

Kapsayıcı Görüntüsü Dağıtımı , kapsayıcılarınızın temel görüntü olarak hangi işletim sistemi görüntüsünü kullandığını belirtir. Kapsayıcı olarak Linux ve Windows arasında geçiş yaptığınızda bu liste değişir. Kullanılabilir görüntülerin listesi için önceki bölüme bakın.

launchSettings.json içindeki .NET SDK kapsayıcı derleme girdisi aşağıdaki koda benzer:

"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}

.NET SDK'sı, kapsayıcı temel görüntüsü ve ayarlanacağı ortam değişkenleri gibi dockerfile içinde kodlanmış olabilecek bazı ayarları yönetir. Kapsayıcı yapılandırması için proje dosyasındaki kullanılabilir ayarlar Kapsayıcınızı özelleştirme bölümünde listelenir. Örneğin , Container Image Distro özelliği olarak ContainerBaseImage proje dosyasına kaydedilir. Daha sonra proje dosyasını düzenleyerek değiştirebilirsiniz.

<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>

Sonraki Adımlar

Kapsayıcılarla çalışmaya yönelik Visual Studio araçlarının hizmet uygulaması ve kullanımı hakkında daha fazla bilgi için aşağıdaki makaleleri okuyun:

Visual Studio'da Docker

Yerel kapsayıcıdaki uygulamalarda hata ayıklama

Visual Studio kullanarak bir ASP.NET kapsayıcısını bir kapsayıcı kayıt defterine dağıtma

Azure App Service’e dağıtma

Visual Studio kullanarak Azure Container Apps'e dağıtma