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 .dcproj
progetto 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à | Ufficio | 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-compose del 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 passato ai docker compose comandi tramite --env-file . Vedere Usare l'attributo env_file. |
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 Start senza eseguire il debug (CTRL+F5) in un progetto di funzioni di Azure eseguito in un processo isolato. |
com.microsoft.visual-studio.project-name | Nome del progetto, che consente a Visual Studio di trovare il progetto se il progetto non si trova nella stessa cartella del Dockerfile. |
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 solo in docker-compose.vs.debug.yml:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Per altre informazioni, vedere Punto di ingresso del contenitore
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