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.
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.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
Özellik ayarını mevcut bir PropertyGroup
öğesine ekleyebilir veya yoksa yeni bir PropertyGroup
öğesi oluşturabilirsiniz.
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 healthcheck Docker 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-compose temel 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 compose aracı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.
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 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.
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.vs.debug.yml veya docker-compose.vs.release.ymliçinde 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.
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ı. |
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
services:
webapplication1:
build:
target: customStage
labels:
...
uygulamanızı başlatmadan önce entrypoint
ayarını kullanarak ve DockerDevelopmentMode
bağı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:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Daha fazla bilgi için bkz. kapsayıcı giriş noktası
MSBuild özellikleri hakkında genel bilgi için bkz. MSBuild Özellikleri.
Kapsayıcı Araçları derleme özelliklerini
Kapsayıcı Araçları başlatma ayarlarını
Visual Studio'da Docker Compose başlatma profillerini yönetme