Properti build Docker Compose

Selain properti yang mengontrol proyek Docker individual, yang dijelaskan dalam properti build Container Tools, Anda juga dapat menyesuaikan cara Visual Studio membangun proyek Docker Compose Anda dengan mengatur properti Docker Compose yang digunakan MSBuild untuk membangun solusi Anda. Anda juga dapat mengontrol bagaimana debugger Visual Studio menjalankan aplikasi Docker Compose Anda dengan mengatur label file di file konfigurasi Docker Compose.

Nota

Properti build ini juga berlaku saat Anda menggunakan Podman Compose sebagai runtime Compose di Visual Studio.

Cara mengatur properti MSBuild

Untuk mengatur nilai properti, edit file proyek. Untuk properti Docker Compose, file proyek ini adalah file dengan ekstensi .dcproj, kecuali dinyatakan lain dalam tabel di bagian berikutnya. Misalnya, Anda ingin menentukan untuk meluncurkan browser saat memulai penelusuran kesalahan. Anda dapat mengatur properti DockerLaunchAction dalam file proyek .dcproj sebagai berikut.

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

Anda dapat menambahkan pengaturan properti ke elemen PropertyGroup yang sudah ada, atau jika tidak ada, buat elemen PropertyGroup baru.

Properti Docker Compose MSBuild

Tabel berikut ini memperlihatkan properti MSBuild yang tersedia untuk proyek Docker Compose (.dcproj file).

Nama properti Deskripsi
AdditionalComposeFilePaths Menentukan file kompos tambahan dalam daftar yang dibatasi titik koma yang akan dikirim ke docker-compose.exe untuk semua perintah. Jalur relatif dari file proyek Docker Compose (dcproj) diizinkan.
DependencyAwareStart Mengaktifkan cara berbeda untuk meluncurkan aplikasi yang mendukung properti Docker Compose depends_on dan healthcheck, yang mengontrol pesanan startup layanan dan pemeriksaan kesehatan.

Memerlukan Visual Studio 17.13 atau yang lebih baru.

Nilai default: False
DockerComposeBaseFilePath Menentukan bagian pertama dari nama file file Docker Compose, tanpa ekstensi .yml. Misalnya:
1. DockerComposeBaseFilePath = null/undefined: gunakan jalur file dasar docker-compose, dan file akan diberi nama docker-compose.yml dan docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: file akan diberi nama mydockercompose.yml dan mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: file akan naik satu tingkat.

Nilai default: docker-compose
DockerComposeBuildArguments Menentukan parameter tambahan untuk diteruskan ke perintah docker-compose build. Misalnya, --parallel --pull.
DockerComposeDownArguments Menentukan parameter tambahan untuk diteruskan ke perintah docker-compose down. Misalnya, --timeout 500.
DockerComposeEnvFilePath Jalur relatif ke file .env yang diteruskan ke perintah docker compose melalui --env-file. Lihat Menggunakan atribut env_file.

Nilai default: Kosong
DockerComposeProjectName Jika ditentukan, ambil alih nama proyek untuk proyek Docker Compose.

Nilai default: "dockercompose" + hash yang dihasilkan secara otomatis
DockerComposeProjectsToIgnore Menentukan proyek yang akan diabaikan oleh alat Docker Compose selama debug. Properti ini dapat digunakan untuk proyek apa pun. Jalur file dapat ditentukan salah satu dari dua cara:
1. Relatif terhadap dcproj. Misalnya, <DockerComposeProjectsToIgnore> path\to\AngularProject1.csproj </DockerComposeProjectsToIgnore>.
2. Jalur absolut.
Catatan: Jalur harus dipisahkan oleh karakter pemisah ;.
DockerComposeUpArguments Menentukan parameter tambahan untuk diteruskan ke perintah docker-compose up. Misalnya, --timeout 500.
DockerDevelopmentMode Mengontrol apakah proyek pengguna dibangun dalam kontainer. Nilai yang diizinkan dari kontrol Fast atau Regular tahap mana yang dibangun dalam Dockerfile. Konfigurasi Debug adalah mode Cepat secara default dan mode Reguler sebaliknya.

Nilai default: Cepat
DockerLaunchAction Menentukan tindakan peluncuran yang akan dilakukan pada F5 atau Ctrl+F5. Nilai yang diizinkan adalah None, LaunchBrowser, dan LaunchWCFTestClient.

Nilai default: Tidak ada
DockerLaunchBrowser Menunjukkan apakah akan meluncurkan browser. Diabaikan jika DockerLaunchAction ditentukan.

Nilai default: False
DockerServiceName Jika DockerLaunchAction atau DockerLaunchBrowser ditentukan, maka DockerServiceName menentukan layanan mana yang direferensikan dalam file docker-compose akan diluncurkan.
DockerServiceUrl URL yang digunakan saat meluncurkan browser. Token pengganti yang valid adalah "{ServiceIPAddress}", "{ServicePort}", dan "{Scheme}". Misalnya: {Scheme}://{ServiceIPAddress}:{ServicePort}
DockerTargetOS OS target yang digunakan saat membangun gambar Docker.

Selain itu, properti DockerComposeProjectPath dalam file proyek .csproj atau .vbproj menentukan jalur relatif ke file proyek Docker Compose (.dcproj). Atur properti ini saat menerbitkan proyek layanan untuk menemukan pengaturan build gambar terkait yang disimpan dalam file docker-compose.yml.

Contoh

Jika Anda mengubah lokasi file docker-compose, dengan mengatur DockerComposeBaseFilePath ke jalur relatif, maka Anda juga perlu memastikan bahwa konteks build diubah sehingga mereferensikan folder solusi. Misalnya, jika file docker-compose Anda adalah folder yang disebut DockerComposeFiles, file Docker Compose harus mengatur konteks build ke ".." atau ".. . /..", tergantung di mana relatif terhadap folder solusi.

<?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>

File mydockercompose.yml akan terlihat seperti ini, dengan konteks build diatur ke jalur relatif folder solusi (dalam hal ini, ..).

version: '3.4'

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

Nota

DockerComposeBuildArguments, DockerComposeDownArguments, dan DockerComposeUpArguments baru di Visual Studio 2019 versi 16.3.

Mengesampingkan konfigurasi Docker Compose Visual Studio

Biasanya docker-compose.override.yml digunakan untuk mengambil alih pengaturan tertentu di docker-compose.yml. Selain itu, Visual Studio menghasilkan file penggantian docker-compose.vs.debug.g.yml (untuk mode Fast) dan docker-compose.vs.release.g.yml (untuk mode Reguler) dengan pengaturan yang khusus untuk menjalankan aplikasi di dalam Visual Studio. Anda dapat mengambil alih pengaturan Visual Studio ini dengan menempatkan file bernama docker-compose.vs.debug.yml (untuk mode Fast) atau docker-compose.vs.release.yml (untuk mode Reguler) di direktori yang sama dengan file docker-compose.yml Anda. Klik kanan proyek Docker Compose dan pilih Buka Folder di File Explorer , lalu gunakan Tambahkan>Item yang Ada untuk menambahkan file ke proyek Docker Compose Anda.

Ujung

Untuk mengetahui nilai default untuk salah satu pengaturan Visual Studio, lihat di direktori output menengah (misalnya, obj/Docker) untuk docker-compose.vs.debug.g.yml atau docker-compose.vs.release.g.yml. File-file ini dihasilkan oleh Visual Studio dan tidak boleh dimodifikasi.

Label file Docker Compose

Di docker-compose.vs.debug.yml atau docker-compose.vs.release.yml, Anda dapat menentukan label khusus penggantian sebagai berikut:

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

Gunakan tanda kutip ganda di sekitar nilai, seperti dalam contoh sebelumnya, dan gunakan garis miring terbalik sebagai karakter escape untuk garis miring terbalik di jalur.

Nama label Deskripsi
com.microsoft.visualstudio.debuggee.program Program diluncurkan ketika memulai penelusuran kesalahan. Untuk aplikasi .NET Core, pengaturan ini biasanya dotnet.
com.microsoft.visualstudio.debuggee.arguments Argumen diteruskan ke program saat memulai penelusuran kesalahan. Untuk aplikasi .NET Core, argumen ini biasanya merupakan jalur pencarian tambahan untuk paket NuGet diikuti dengan jalur ke perakitan output proyek.
com.microsoft.visualstudio.debuggee.workingdirectory Direktori yang digunakan sebagai direktori awal saat memulai penelusuran kesalahan. Pengaturan ini biasanya /app untuk kontainer Linux, atau C:\app untuk kontainer Windows.
com.microsoft.visualstudio.debuggee.killprogram Perintah ini digunakan untuk menghentikan program debuggee yang berjalan di dalam kontainer (bila perlu).
com.microsoft.visualstudio.debuggee.noattach.program Program ini diluncurkan saat Anda menggunakan Mulai tanpa men-debug (Ctrl+F5) dalam proyek fungsi Azure yang berjalan dalam proses terisolasi . Biasanya F5 dan Ctrl+F5 menggunakan program yang sama, tetapi jika ada jenis proyek seperti Azure Functions dalam proses terisolasi memerlukan program yang berbeda dari F5, maka ini akan digunakan.
com.microsoft.visualstudio.debuggee.noattach.arguments Argumen yang diteruskan ke program saat Anda menggunakan Mulai tanpa men-debug (Ctrl+F5) dalam proyek fungsi Azure yang berjalan dalam proses terisolasi.
com.microsoft.visual-studio.project-name Nama proyek, yang membantu Visual Studio menemukan proyek jika proyek tidak berada di folder yang sama dengan Dockerfile.
com.microsoft.visualstudio.launch-url.path-query Jalur dan kueri yang digunakan oleh jendela kontainer saat membuka tautan di tab port.

Memerlukan Visual Studio 17.13 atau yang lebih baru.

Menyesuaikan proses build Docker

Anda dapat mendeklarasikan tahap mana yang akan dibangun di Dockerfile Anda dengan menggunakan pengaturan target di properti build. Penimpaan ini hanya dapat digunakan dalam docker-compose.vs.debug.yml atau docker-compose.vs.release.yml

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

Mengkustomisasi proses pengaktifan aplikasi

Anda dapat menjalankan perintah atau skrip kustom sebelum meluncurkan aplikasi dengan menggunakan pengaturan entrypoint, dan membuatnya bergantung pada DockerDevelopmentMode. Misalnya, jika Anda perlu menyiapkan sertifikat hanya dalam mode cepat dengan menjalankan update-ca-certificates, tetapi tidak dalam mode Reguler, Anda dapat menambahkan kode berikut dalam hanyadocker-compose.vs.debug.yml:

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

Untuk informasi selengkapnya, lihat titik entri kontainer

Langkah berikutnya

Untuk informasi tentang properti MSBuild umumnya, lihat Properti MSBuild.

Lihat juga

properti build Alat Kontainer

pengaturan peluncuran Alat Kontainer

Mengelola profil peluncuran untuk Docker Compose di Visual Studio

MSBuild properti yang dicadangkan dan terkenal