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ı uzantısı olan dosyadır .dcproj
. Örneğin, hata ayıklamaya başladığınızda tarayıcının başlatılmasını belirtmek istediğinizi varsayalım. Proje .dcproj
dosyasında özelliğini DockerLaunchAction
aşağıdaki gibi ayarlayabilirsiniz.
<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-compose kullanı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-file komutlara geçirilen docker compose bir .env dosyasının göreli yolu. Bkz . env_file özniteliğini kullanma. |
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 işlevleri projesinde Hata ayıklamadan başlat (Ctrl+F5) kullandığınızda program başlatılır. 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 işlevleri projesinde Hata ayıklamadan başlat (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
Özelliğindeki ayarını kullanarak Dockerfile'ınızda hangi aşamanın derleneceklerini target
build
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ı DockerDevelopmentMode
hale getirebilirsiniz. Örneğin, bir sertifikayı yalnızca Hızlı modda, ancak Normal modda çalıştırarak update-ca-certificates
ayarlamanız gerekiyorsa, aşağıdaki kodu yalnızca docker-compose.vs.debug.yml ekleyebilirsiniz:
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 özellikleri
Kapsayıcı Araçları başlatma ayarları
Visual Studio'da Docker Compose için başlatma profillerini yönetme