Proprietà di compilazione di Docker Compose

Oltre alle proprietà che controllano i singoli progetti Docker, descritti in Proprietà di compilazione di Strumenti contenitori, è anche possibile personalizzare il modo in cui Visual Studio compila i progetti Docker Compose impostando le proprietà docker Compose usate da MSBuild per compilare la soluzione. È anche possibile controllare come il debugger di Visual Studio esegue le app Docker Compose impostando le etichette dei file nei file di configurazione docker Compose.

Come impostare le proprietà di MSBuild

Per impostare il valore di una proprietà, modificare il file di progetto. Per le proprietà Docker Compose, questo file di progetto è quello con estensione dcproj, a meno che non diversamente indicato nella tabella nella sezione successiva. Si supponga, ad esempio, di voler specificare di avviare il browser all'avvio del debug. È possibile impostare la DockerLaunchAction proprietà nel file di progetto dcproj come indicato di seguito.

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

È possibile aggiungere l'impostazione della proprietà a un elemento esistente PropertyGroup o, in caso contrario, creare un nuovo PropertyGroup elemento.

Proprietà d MSBuild per Docker Compose

La tabella seguente illustra le proprietà di MSBuild disponibili per i progetti Docker Compose.

Nome della proprietà Titolo Descrizione Default value
AdditionalComposeFilePaths dcproj Specifica altri file di composizione in un elenco delimitato da punto e virgola da inviare a docker-compose.exe per tutti i comandi. Sono consentiti percorsi relativi dal file di progetto Docker Compose (dcproj). -
DockerComposeBaseFilePath dcproj Specifica la prima parte dei nomi file dei file Docker Compose, senza l'estensione .yml . Ad esempio:
1. DockerComposeBaseFilePath = null/undefined: usare il percorso docker-composedel file di base e i file verranno denominati docker-compose.yml e docker-compose.override.yml.
2. DockerComposeBaseFilePath = mydockercompose: i file verranno denominati mydockercompose.yml e mydockercompose.override.yml.
3. DockerComposeBaseFilePath = .. \mydockercompose: i file saranno di un livello superiore.
docker-compose
DockerComposeBuildArguments dcproj Specifica i parametri aggiuntivi da passare al docker-compose build comando. Ad esempio: --parallel --pull.
DockerComposeDownArguments dcproj Specifica i parametri aggiuntivi da passare al docker-compose down comando. Ad esempio: --timeout 500. -
DockerComposeEnvFilePath dcproj Percorso relativo di un file con estensione env che verrà passato ai docker compose comandi tramite --env-file. Vedere Sostituire con un file con estensione env. Vuoto
DockerComposeProjectName dcproj Se specificato, esegue l'override del nome del progetto per un progetto Docker Compose. "dockercompose" + hash generato automaticamente
DockerComposeProjectPath csproj o vbproj Percorso relativo del file di progetto Docker Compose (dcproj). Impostare questa proprietà quando si pubblica il progetto di servizio per trovare le impostazioni di compilazione dell'immagine associate archiviate nel file docker-compose.yml. -
DockerComposeProjectsToIgnore dcproj Specifica i progetti da ignorare dagli strumenti Docker Compose durante il debug. Questa proprietà può essere utilizzata per qualsiasi progetto. I percorsi di file possono essere specificati in due modi:
1. Relativo a dcproj. Ad esempio: <DockerComposeProjectsToIgnore>path\to\AngularProject1.csproj</DockerComposeProjectsToIgnore>.
2. Percorsi assoluti.
Nota: i percorsi devono essere separati dal carattere ;delimitatore .
-
DockerComposeUpArguments dcproj Specifica i parametri aggiuntivi da passare al docker-compose up comando. Ad esempio: --timeout 500. -
DockerDevelopmentMode dcproj Controlla se il progetto utente è compilato nel contenitore. Valori consentiti di controllo Fast o Regular che le fasi vengono compilate in un Dockerfile. La configurazione di debug è modalità Veloce per impostazione predefinita e Modalità regolare in caso contrario. Veloce
DockerLaunchAction dcproj Specifica l'azione di avvio da eseguire su F5 o CTRL+F5. I valori consentiti sono None, LaunchBrowser e LaunchWCFTestClient. None
DockerLaunchBrowser dcproj Indica se avviare il browser. Ignorato se viene specificato DockerLaunchAction. Falso
DockerServiceName dcproj Se si specifica DockerLaunchAction o DockerLaunchBrowser, DockerServiceName specifica il servizio a cui viene fatto riferimento nel docker-compose file. -
DockerServiceUrl dcproj URL da usare durante l'avvio del browser. I token di sostituzione validi sono "{ServiceIPAddress}", "{ServicePort}" e "{Scheme}". Ad esempio: {Scheme}://{ServiceIPAddress}:{ServicePort} -
DockerTargetOS dcproj Sistema operativo di destinazione usato per la compilazione dell'immagine Docker. -

Esempio

Se si modifica il percorso dei file, impostando su DockerComposeBaseFilePath un percorso relativo, è anche necessario assicurarsi che il contesto di docker-compose compilazione venga modificato in modo che faccia riferimento alla cartella della soluzione. Ad esempio, se il docker-compose file è una cartella denominata DockerComposeFiles, il file Docker Compose deve impostare il contesto di compilazione su ".". o ".. /..", a seconda della posizione in cui è relativa alla cartella della soluzione.

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

Il file mydockercompose.yml dovrebbe essere simile al seguente, con il contesto di compilazione impostato sul percorso relativo della cartella della soluzione (in questo caso, ..).

version: '3.4'

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

Nota

DockerComposeBuildArguments, DockerComposeDownArguments e DockerComposeUpArguments sono nuove in Visual Studio 2019 versione 16.3.

Override della configurazione Docker Compose di Visual Studio

In genere docker-compose.override.yml viene usato per eseguire l'override di determinate impostazioni in docker-compose.yml. Visual Studio genera inoltre file di override docker-compose.vs.debug.g.yml (per la modalità veloce ) e docker-compose.vs.release.g.yml (per modalità regolare ) con impostazioni specifiche per l'esecuzione dell'applicazione all'interno di Visual Studio. È possibile eseguire l'override di queste impostazioni di Visual Studio inserendo un file denominato docker-compose.vs.debug.yml (per la modalità veloce) o docker-compose.vs.release.yml (per la modalità regolare) nella stessa directory del file docker-compose.yml. Fare clic con il pulsante destro del mouse sul progetto Docker Compose e selezionare Apri cartella in Esplora file , quindi usare Aggiungi>elemento esistente per aggiungere il file al progetto Docker Compose.

Suggerimento

Per individuare i valori predefiniti per una delle impostazioni di Visual Studio, cercare nella directory di output intermedia (ad esempio obj /Docker) per docker-compose.vs.debug.g.yml o docker-compose.vs.release.g.yml. Questi file vengono generati da Visual Studio e non devono essere modificati.

Etichette file Docker Compose

In docker-compose.vs.debug.yml o docker-compose.vs.release.yml è possibile definire etichette specifiche dell'override come indicato di seguito:

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

Usare virgolette doppie intorno ai valori, come nell'esempio precedente, e usare la barra rovesciata come carattere di escape per le barre rovesciata nei percorsi.

Label name Descrizione
com.microsoft.visualstudio.debuggee.program Programma avviato all'avvio del debug. Per le app .NET Core, questa impostazione è in genere dotnet.
com.microsoft.visualstudio.debuggee.arguments Argomenti passati al programma durante l'avvio del debug. Per le app .NET Core, questi argomenti sono in genere percorsi di ricerca aggiuntivi per i pacchetti NuGet seguiti dal percorso dell'assembly di output del progetto.
com.microsoft.visualstudio.debuggee.workingdirectory Directory utilizzata come directory iniziale all'avvio del debug. Questa impostazione è in genere /app per contenitori Linux o C:\app per contenitori Windows.
com.microsoft.visualstudio.debuggee.killprogram Questo comando viene usato per arrestare il programma di debug in esecuzione all'interno del contenitore (quando necessario).
Label name Descrizione
com.microsoft.visualstudio.debuggee.program Programma avviato all'avvio del debug. Per le app .NET Core, questa impostazione è in genere dotnet.
com.microsoft.visualstudio.debuggee.arguments Argomenti passati al programma durante l'avvio del debug. Per le app .NET Core, questi argomenti sono in genere percorsi di ricerca aggiuntivi per i pacchetti NuGet seguiti dal percorso dell'assembly di output del progetto.
com.microsoft.visualstudio.debuggee.workingdirectory Directory utilizzata come directory iniziale all'avvio del debug. Questa impostazione è in genere /app per contenitori Linux o C:\app per contenitori Windows.
com.microsoft.visualstudio.debuggee.killprogram Questo comando viene usato per arrestare il programma di debug in esecuzione all'interno del contenitore (quando necessario).
com.microsoft.visualstudio.debuggee.noattach.program Il programma avviato quando si usa Start senza eseguire il debug (CTRL+F5) in un progetto di Funzioni di Azure eseguito in un processo isolato. In genere sia F5 che CTRL+F5 usano lo stesso programma, ma se qualsiasi tipo di progetto come Funzioni di Azure in un processo isolato richiede un programma diverso da F5, verrà usato questo.
com.microsoft.visualstudio.debuggee.noattach.arguments Gli argomenti passati al programma quando si usa Avvia senza eseguire il debug (CTRL+F5) in un progetto Funzioni di Azure eseguito in un processo isolato.

Personalizzare il processo di compilazione Docker

È possibile dichiarare quale fase compilare nel Dockerfile usando l'impostazione target nella build proprietà . Questo override può essere usato solo in docker-compose.vs.debug.yml o docker-compose.vs.release.yml

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

Personalizzare il processo di avvio dell'app

È possibile eseguire un comando o uno script personalizzato prima di avviare l'app usando l'impostazione entrypoint e renderla dipendente da DockerDevelopmentMode. Ad esempio, se è necessario configurare un certificato solo in modalità Veloce eseguendo update-ca-certificates, ma non in modalità regolare, è possibile aggiungere il codice seguente soloin docker-compose.vs.debug.yml:

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

Passaggi successivi

Per informazioni sulle proprietà di MSBuild in genere, vedere Proprietà di MSBuild.

Vedi anche

Proprietà di compilazione di Strumenti contenitore

Impostazioni di avvio di Strumenti contenitore

Gestire i profili di avvio per Docker Compose in Visual Studio

Proprietà riservate e note MSBuild