İngilizce dilinde oku

Aracılığıyla paylaş


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ü oluşturmak 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. DockerLaunchAction proje dosyasındaki .dcproj özelliğini aşağıdaki gibi ayarlayabilirsiniz.

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

Özellik ayarını mevcut bir PropertyGroup öğesine ekleyebilir veya yoksa yeni bir PropertyGroup öğesi oluşturabilirsiniz.

Docker Compose MSBuild özellikleri

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

Özellik adı Açıklama
EkComposeFilePaths 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.
DependencyAwareStart depends_on ve healthcheckDocker Compose özelliklerini destekleyen ve hizmet başlatma sırasını ve sistem durumu denetimlerini denetleyen uygulamayı başlatmanın farklı bir yolunu etkinleştirir.

Visual Studio 17.13 veya üzerini gerektirir.

Varsayılan değer: False
DockerComposeBaseFilePath Docker Compose dosyalarının dosya adlarının ilk bölümünü .yml uzantısı olmadan belirtir. Mesela:
1. DockerComposeBaseFilePath = null/undefined: docker-composetemel dosya yolunu kullanın; dosyalar docker-compose.yml ve docker-compose.override.ymlolarak adlandırılır.
2. DockerComposeBaseFilePath = mydockercompose: dosyalar mydockercompose.yml ve mydockercompose.override.ymlolarak adlandırılır.
3. DockerComposeBaseFilePath = .. \mydockercompose: dosyalar bir düzeyde olacak.

Varsayılan değer: docker-compose
DockerComposeBuildArguments docker-compose build komutuna geçirecek ek parametreleri belirtir. Örneğin, --parallel --pull.
DockerComposeDownArguments docker-compose down komutuna geçirecek ek parametreleri belirtir. Örneğin, --timeout 500.
DockerComposeEnvFilePath docker composearacılığıyla --env-file komutlarına geçirilen bir .env dosyasının göreli yolu. bkz. env_file özniteliğinikullanma.

Varsayılan değer: Boş
DockerComposeProjectName Belirtilirse, Docker Compose projesinin proje adını geçersiz kılar.

Varsayılan değer: "dockercompose" + otomatik oluşturulan karma
DockerComposeProjectsToIgnore 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 docker-compose up komutuna geçirecek ek parametreleri belirtir. Örneğin, --timeout 500.
DockerDevelopmentMode Kullanıcı projesinin kapsayıcıda derlenip derlenmesini denetler. Hızlı veya normal izin verilen değerleri, Dockerfile'da hangi aşamaların oluşturulduğuna denetler. Hata ayıklama yapılandırması varsayılan olarak Hızlı mod ve aksi halde Normal moddur.

Varsayılan değer: Hızlı
DockerLaunchAction F5 veya Ctrl+F5 üzerinde gerçekleştirilecek başlatma eylemini belirtir. İzin verilen değerler None, LaunchBrowser ve LaunchWCFTestClient değerleridir.

Varsayılan değer: Yok
DockerLaunchBrowser Tarayıcının başlatılıp başlatılmayacağını gösterir. DockerLaunchAction belirtilirse yoksayılır.

Varsayılan değer: False
DockerServiceName DockerLaunchAction veya DockerLaunchBrowser belirtilirse DockerServiceName, docker-compose dosyasında başvurulan hizmetin başlatıldığını belirtir.
DockerServiceUrl 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 Docker görüntüsünü oluştururken kullanılan hedef işletim sistemi.

Ayrıca, DockerComposeProjectPath veya .csproj proje dosyasındaki .vbproj özelliği, Docker Compose projesi (.dcproj) dosyasının göreli yolunu belirtir. 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.

Örnek

docker-compose dosyalarının konumunu değiştirmek için DockerComposeBaseFilePath göreli bir yola ayarlarsanız, çözüm klasörüne başvurması için derleme bağlamının değiştirildiğinden de emin olmanız gerekir. Örneğin, docker-compose dosyanız DockerComposeFilesadlı bir klasörse Docker Compose dosyası derleme bağlamını ".." veya ".. /..", çözüm klasörüne göre konumuna bağlı olarak.

XML
<?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 ..).

yml
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'deki bazı ayarları geçersiz kılmak için kullanılır. Ayrıca Visual Studio, uygulamayı Visual Studio'da çalıştırmaya özgü ayarlara sahip docker-compose.vs.debug.g.yml (Hızlı modu için) ve docker-compose.vs.release.g.yml (Normal modu için) geçersiz kılma dosyaları oluşturur. docker-compose.vs.debug.yml adlı bir dosya (Hızlı modu için) veya docker-compose.vs.release.yml (Normal modu için) docker-compose.yml dosyanızla aynı dizine yerleştirerek bu Visual Studio ayarlarını geçersiz kılabilirsiniz. Docker Compose projesine sağ tıklayın ve Dosya Gezgini'nde Klasör Aç'ı seçin ve dosyayı Docker Compose projenize eklemek için >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.ymliç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.ymliçinde geçersiz kılmaya özgü etiketleri aşağıdaki gibi tanımlayabilirsiniz:

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

Etiket adı 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.
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 .
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).
Etiket adı 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.
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 .
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 işlevleri projesinde (Ctrl+F5) hata ayıklamadan Start 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ü için F5 farklı bir program gerekiyorsa bu kullanılır.
com.microsoft.visualstudio.debuggee.noattach.arguments Yalıtılmış bir işlemde çalışan bir Azure işlevleri projesinde hata ayıklamadan Başlangıç (Ctrl+F5) kullandığınızda programa geçirilen bağımsız değişkenler.
com.microsoft.visual-studio.project-name Proje, Dockerfile ile aynı klasörde değilse Visual Studio'nun projeyi bulmasına yardımcı olan projenin adı.

Docker derleme işlemini özelleştirme

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

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

Uygulama başlatma işlemini özelleştirme

uygulamanızı başlatmadan önce entrypoint ayarını kullanarak ve DockerDevelopmentModebağımlı hale getirerek bir komut veya özel betik çalıştırabilirsiniz. Örneğin, çalıştırarak update-ca-certificates modunda bir sertifika ayarlamanız gerekiyorsa ancak Normal modunda değilse, aşağıdaki kodu yalnızca docker-compose.vs.debug.ymlekleyebilirsiniz:

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

Daha fazla bilgi için bkz. kapsayıcı giriş noktası

Sonraki adımlar

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

Ayrıca bkz.

Kapsayıcı Araçları derleme özelliklerini

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

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

MSBuild ayrılmış ve iyi bilinen özellikleri