Docker Compose derleme özellikleri

Kapsayıcı Araçları derleme özellikleri bölümünde açıklanan tek tek Docker projelerini denetleyen özelliklere ek olarak, MSBuild'in çözümünüzü derlemek için kullandığı Docker Compose özelliklerini ayarlayarak Visual Studio'nın Docker Compose projelerinizi nasıl derlediğini de özelleştirebilirsiniz. Ayrıca, Docker Compose yapılandırma dosyalarında dosya etiketleri ayarlayarak Visual Studio hata ayıklayıcının Docker Compose uygulamalarınızı nasıl çalıştırabileceğini denetleyebilirsiniz.

MSBuild özelliklerini ayarlama

Bir özelliğin değerini ayarlamak için proje dosyasını düzenleyin. Docker Compose özellikleri için, sonraki bölümde tabloda aksi belirtilmediği sürece bu proje dosyası .dcproj uzantısına sahip dosyadır. Örneğin, hata ayıklamaya başladığınızda tarayıcının başlatılmasını belirtmek istediğinizi varsayalım. .dcproj proje dosyasında özelliğini aşağıdaki gibi ayarlayabilirsiniz DockerLaunchAction .

<PropertyGroup>
   <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>

Özellik ayarını var olan PropertyGroup bir öğeye ekleyebilir veya yoksa yeni PropertyGroup bir öğe oluşturabilirsiniz.

Docker Compose MSBuild özellikleri

Aşağıdaki tabloda Docker Compose projeleri için kullanılabilen MSBuild özellikleri gösterilmektedir.

Özellik adı Konum Açıklama Default value
EkComposeFilePaths dcproj Tüm komutlar için docker-compose.exe gönderilecek noktalı virgülle ayrılmış bir listede ek oluşturma dosyalarını belirtir. Docker Compose proje dosyasından (dcproj) göreli yollara izin verilir. -
DockerComposeBaseFilePath dcproj Uzantı olmadan Docker Compose dosyalarının dosya adlarının .yml ilk bölümünü belirtir. Örneğin:
1. DockerComposeBaseFilePath = null/undefined: temel dosya yolunu docker-composekullanın; dosyalar docker-compose.yml ve docker-compose.override.yml olarak adlandırılır.
2. DockerComposeBaseFilePath = mydockercompose: dosyalar mydockercompose.yml ve mydockercompose.override.yml olarak adlandırılır.
3. DockerComposeBaseFilePath = .. \mydockercompose: dosyalar bir düzeyde olacak.
docker-compose
DockerComposeBuildArguments dcproj Komutuna geçirebilmek docker-compose build için ek parametreleri belirtir. Örneğin, --parallel --pull.
DockerComposeDownArguments dcproj Komutuna geçirebilmek docker-compose down için ek parametreleri belirtir. Örneğin, --timeout 500. -
DockerComposeEnvFilePath dcproj aracılığıyla --env-filekomutlara geçirilecek docker compose bir .env dosyasının göreli yolu. Bkz. .env dosyasıyla değiştirme. Boş
DockerComposeProjectName dcproj Belirtilirse, Docker Compose projesinin proje adını geçersiz kılar. "dockercompose" + otomatik oluşturulan karma
DockerComposeProjectPath csproj veya vbproj Docker Compose projesi (dcproj) dosyasının göreli yolu. docker-compose.yml dosyasında depolanan ilişkili görüntü derleme ayarlarını bulmak için hizmet projesini yayımlarken bu özelliği ayarlayın. -
DockerComposeProjectsToIgnore dcproj Hata ayıklama sırasında Docker Compose araçları tarafından yoksayılacak projeleri belirtir. Bu özellik herhangi bir proje için kullanılabilir. Dosya yolları iki yoldan biri belirtilebilir:
1. Dcproj'a göre. Örneğin, <DockerComposeProjectsToIgnore>path\to\AngularProject1.csproj</DockerComposeProjectsToIgnore>.
2. Mutlak yollar.
Not: Yollar sınırlayıcı karakteriyle ;ayrılmalıdır.
-
DockerComposeUpArguments dcproj Komutuna geçirebilmek docker-compose up için ek parametreleri belirtir. Örneğin, --timeout 500. -
DockerDevelopmentMode dcproj Kullanıcı projesinin kapsayıcıda derlenip derlenmesini denetler. Bir Dockerfile içinde hangi aşamaların derlenmiş olduğunu Hızlı veya Düzenli olarak denetlemenin izin verilen değerleri. Hata ayıklama yapılandırması varsayılan olarak Hızlı mod ve aksi halde Normal moddur. Hızlı
DockerLaunchAction dcproj F5 veya Ctrl+F5 üzerinde gerçekleştirilecek başlatma eylemini belirtir. İzin verilen değerler None, LaunchBrowser ve LaunchWCFTestClient değerleridir. Hiçbiri
DockerLaunchBrowser dcproj Tarayıcının başlatılıp başlatılmayacağını gösterir. DockerLaunchAction belirtilirse yoksayılır. False
DockerServiceName dcproj DockerLaunchAction veya DockerLaunchBrowser belirtilirse, DockerServiceName dosyada docker-compose başvurulan hizmetin başlatıldığını belirtir. -
DockerServiceUrl dcproj Tarayıcı başlatılırken kullanılacak URL. Geçerli değiştirme belirteçleri şunlardır: "{ServiceIPAddress}", "{ServicePort}" ve "{Scheme}". Örneğin: {Scheme}://{ServiceIPAddress}:{ServicePort} -
DockerTargetOS dcproj Docker görüntüsünü oluştururken kullanılan hedef işletim sistemi. -

Örnek

Dosyaların konumunu docker-compose göreli bir yola ayarlayarak DockerComposeBaseFilePath değiştirirseniz, derleme bağlamının çözüm klasörüne başvuracak şekilde değiştirildiğinden de emin olmanız gerekir. Örneğin, dosyanız docker-compose DockerComposeFiles adlı bir klasörse Docker Compose dosyası derleme bağlamını ".." veya ".. olarak ayarlamalıdır. /..", çözüm klasörüne göre konumuna bağlı olarak.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Windows</DockerTargetOS>
    <ProjectGuid>154022c1-8014-4e9d-bd78-6ff46670ffa4</ProjectGuid>
    <DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
    <DockerServiceUrl>{Scheme}://{ServiceIPAddress}{ServicePort}</DockerServiceUrl>
    <DockerServiceName>webapplication1</DockerServiceName>
    <DockerComposeBaseFilePath>DockerComposeFiles\mydockercompose</DockerComposeBaseFilePath>
    <AdditionalComposeFilePaths>AdditionalComposeFiles\myadditionalcompose.yml</AdditionalComposeFilePaths>
  </PropertyGroup>
  <ItemGroup>
    <None Include="DockerComposeFiles\mydockercompose.override.yml">
      <DependentUpon>DockerComposeFiles\mydockercompose.yml</DependentUpon>
    </None>
    <None Include="DockerComposeFiles\mydockercompose.yml" />
    <None Include=".dockerignore" />
  </ItemGroup>
</Project>

mydockercompose.yml dosyası, derleme bağlamı çözüm klasörünün göreli yoluna ayarlanmış olarak şöyle görünmelidir (bu örnekte). ..

version: '3.4'

services:
  webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: ..
      dockerfile: WebApplication1\Dockerfile

Not

DockerComposeBuildArguments, DockerComposeDownArguments ve DockerComposeUpArguments, Visual Studio 2019 sürüm 16.3'te yenidir.

Visual Studio'nun Docker Compose yapılandırmasını geçersiz kılma

genellikle docker-compose.override.yml, docker-compose.yml bazı ayarları geçersiz kılmak için kullanılır. Ayrıca Visual Studio, uygulamayı Visual Studio'da çalıştırmaya özgü ayarlarla docker-compose.vs.debug.g.yml (Hızlı mod için) ve docker-compose.vs.release.g.yml (Normal mod için) dosyaları geçersiz kılma dosyaları oluşturur. docker-compose.yml dosyanızla aynı dizine docker-compose.vs.debug.yml (Hızlı mod için) veya docker-compose.vs.release.yml (Normal mod için) adlı bir dosya yerleştirerek bu Visual Studio ayarlarını geçersiz kılabilirsiniz. Docker Compose projesine sağ tıklayın ve Dosya Gezgini Klasör Aç'ı seçin, ardından Dosyayı Docker Compose projenize eklemek için Varolan ÖğeYi Ekle'yi>kullanın.

İpucu

Visual Studio ayarlarından herhangi birinin varsayılan değerlerini bulmak için docker-compose.vs.debug.g.yml veya docker-compose.vs.release.g.yml için ara çıkış dizinine (örneğin obj/Docker) bakın. Bu dosyalar Visual Studio tarafından oluşturulur ve değiştirilmemelidir.

Docker Compose dosya etiketleri

docker-compose.vs.debug.yml veya docker-compose.vs.release.yml geçersiz kılmaya özgü etiketleri aşağıdaki gibi tanımlayabilirsiniz:

services:
  webapplication1:
    labels:
      com.microsoft.visualstudio.debuggee.workingdirectory: "C:\\my_app_folder"

Önceki örnekte olduğu gibi değerlerin çevresinde çift tırnak işareti kullanın ve yollardaki ters eğik çizgilerde kaçış karakteri olarak ters eğik çizgiyi kullanın.

Label name Açıklama
com.microsoft.visualstudio.debuggee.program Hata ayıklama başlatılırken program başlatıldı. .NET Core uygulamaları için bu ayar genellikle dotnet'tir.
com.microsoft.visualstudio.debuggee.arguments Hata ayıklama başlatılırken programa geçirilen bağımsız değişkenler. .NET Core uygulamaları için bu bağımsız değişkenler genellikle NuGet paketleri için ek arama yolları ve ardından projenin çıkış derlemesinin yoludur.
com.microsoft.visualstudio.debuggee.workingdirectory Hata ayıklama başlatılırken başlangıç dizini olarak kullanılan dizin. Bu ayar genellikle Linux kapsayıcıları için /app veya Windows kapsayıcıları için C:\app ayarıdır.
com.microsoft.visualstudio.debuggee.killprogram Bu komut, kapsayıcının içinde çalışan debuggee programını durdurmak için kullanılır (gerektiğinde).
Label name Açıklama
com.microsoft.visualstudio.debuggee.program Hata ayıklama başlatılırken program başlatıldı. .NET Core uygulamaları için bu ayar genellikle dotnet'tir.
com.microsoft.visualstudio.debuggee.arguments Hata ayıklama başlatılırken programa geçirilen bağımsız değişkenler. .NET Core uygulamaları için bu bağımsız değişkenler genellikle NuGet paketleri için ek arama yolları ve ardından projenin çıkış derlemesinin yoludur.
com.microsoft.visualstudio.debuggee.workingdirectory Hata ayıklama başlatılırken başlangıç dizini olarak kullanılan dizin. Bu ayar genellikle Linux kapsayıcıları için /app veya Windows kapsayıcıları için C:\app ayarıdır.
com.microsoft.visualstudio.debuggee.killprogram Bu komut, kapsayıcının içinde çalışan debuggee programını durdurmak için kullanılır (gerektiğinde).
com.microsoft.visualstudio.debuggee.noattach.program Yalıtılmış bir işlemde çalışan bir Azure İşlevleri projesinde Hata ayıklamadan başlat (Ctrl+F5) kullandığınızda program başlatıldı. Genellikle hem F5 hem de Ctrl+F5 aynı programı kullanır, ancak yalıtılmış bir işlemdeki Azure İşlevleri gibi herhangi bir proje türü F5'ten farklı bir program gerektiriyorsa, bu kullanılır.
com.microsoft.visualstudio.debuggee.noattach.arguments Yalıtılmış bir işlemde çalışan bir Azure İşlevleri projesinde Hata ayıklamadan başlat (Ctrl+F5) kullandığınızda programa geçirilen bağımsız değişkenler.

Docker derleme işlemini özelleştirme

Özelliğindeki ayarını kullanarak Dockerfile'ınızda hangi aşamanın derleneceklerini targetbuild bildirebilirsiniz. Bu geçersiz kılma yalnızca docker-compose.vs.debug.yml veya docker-compose.vs.release.yml kullanılabilir

services:
  webapplication1:
    build:
      target: customStage
    labels:
      ...

Uygulama başlatma işlemini özelleştirme

Ayarı kullanarak entrypoint uygulamanızı başlatmadan önce bir komut veya özel betik çalıştırabilir ve bunu öğesine bağımlı DockerDevelopmentModehale getirebilirsiniz. Örneğin, bir sertifikayı yalnızca Hızlı modda, ancak Normal modda çalıştırarak update-ca-certificatesayarlamanız gerekiyorsa, aşağıdaki kodu yalnızcadocker-compose.vs.debug.yml ekleyebilirsiniz:

services:
  webapplication1:
    entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
    labels:
      ...

Sonraki adımlar

MSBuild özellikleri hakkında genel bilgi için bkz . MSBuild Özellikleri.

Ayrıca bkz.

Kapsayıcı Araçları derleme özellikleri

Kapsayıcı Araçları başlatma ayarları

Visual Studio'da Docker Compose için başlatma profillerini yönetme

MSBuild ayrılmış ve iyi bilinen özellikler