Proprietà di compilazione di Docker Compose
Oltre alle proprietà che controllano i singoli progetti Docker, descritti in proprietà di compilazione di Strumenti contenitore, è 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 un'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 proprietà DockerLaunchAction
nel file di progetto .dcproj
come indicato di seguito.
<PropertyGroup>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
</PropertyGroup>
È possibile aggiungere l'impostazione della proprietà a un elemento PropertyGroup
esistente oppure, se non ne esiste uno, creare un nuovo elemento PropertyGroup
.
Proprietà di Docker Compose MSBuild
La tabella seguente illustra le proprietà di MSBuild disponibili per i progetti Docker Compose ( file.dcproj
).
Nome proprietà | Descrizione |
---|---|
AdditionalComposeFilePaths | 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). |
DependencyAwareStart | Consente un modo diverso per avviare l'app che supporta le proprietà di Docker Compose depends_on e healthcheck , che controllano l'ordine di avvio del servizio e i controlli di integrità.Richiede Visual Studio 17.13 o versione successiva. Valore predefinito: False |
DockerComposeBaseFilePath | Specifica la prima parte dei nomi file dei file Docker Compose, senza l'estensione .yml . Per esempio: 1. DockerComposeBaseFilePath = null/undefined: usare il percorso del file di base docker-compose 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 avranno un livello superiore. Valore predefinito: docker-compose |
DockerComposeBuildArguments | Specifica i parametri aggiuntivi da passare al comando docker-compose build . Ad esempio, --parallel --pull . |
DockerComposeDownArguments | Specifica i parametri aggiuntivi da passare al comando docker-compose down . Ad esempio, --timeout 500 . |
DockerComposeEnvFilePath | Percorso relativo di un file con estensione env passato ai comandi docker compose tramite --env-file . Vedere Usare l'attributo env_file.Valore predefinito: Vuoto |
DockerComposeProjectName | Se specificato, esegue l'override del nome del progetto per un progetto Docker Compose. Valore predefinito: "dockercompose" + hash generato automaticamente |
DockerComposeProjectsToIgnore | 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 | Specifica i parametri aggiuntivi da passare al comando docker-compose up . Ad esempio, --timeout 500 . |
DockerDevelopmentMode | Controlla se il progetto utente è compilato nel contenitore. I valori consentiti di Fast o controllo regolare quali fasi vengono compilate in un Dockerfile. La configurazione di debug è modalità Veloce per impostazione predefinita e Modalità regolare in caso contrario. Valore predefinito: Veloce |
DockerLaunchAction | Specifica l'azione di avvio da eseguire su F5 o CTRL+F5. I valori consentiti sono None, LaunchBrowser e LaunchWCFTestClient. Valore predefinito: Nessuno |
DockerLaunchBrowser | Indica se avviare il browser. Ignorato se viene specificato DockerLaunchAction. Valore predefinito: False |
DockerServiceName | Se si specifica DockerLaunchAction o DockerLaunchBrowser, DockerServiceName specifica il servizio a cui viene fatto riferimento nel file docker-compose viene avviato. |
DockerServiceUrl | URL da usare durante l'avvio del browser. I token di sostituzione validi sono "{ServiceIPAddress}", "{ServicePort}" e "{Scheme}". Ad esempio: {Scheme}://{ServiceIPAddress}:{ServicePort} |
DockerTargetOS | Sistema operativo di destinazione usato per la compilazione dell'immagine Docker. |
Inoltre, la proprietà DockerComposeProjectPath
in un file di progetto .csproj
o .vbproj
specifica il percorso relativo al file del 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.
Esempio
Se si modifica il percorso dei file di docker-compose
, impostando DockerComposeBaseFilePath
su un percorso relativo, è anche necessario assicurarsi che il contesto di compilazione venga modificato in modo che faccia riferimento alla cartella della soluzione. Ad esempio, se il file docker-compose
è 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 l'override dei file docker-compose.vs.debug.g.yml (per modalità fast) 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 modalità veloce) o docker-compose.vs.release.yml (per 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.
Mancia
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.
Nome etichetta | 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 viene in genere /app per i contenitori Linux o C:\app per i 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). |
Personalizzare il processo di compilazione Docker
È possibile dichiarare quale fase compilare nel Dockerfile usando l'impostazione target
nella proprietà build
. Questa sostituzione può essere usata 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 di entrypoint
e rendendolo dipendente dall'DockerDevelopmentMode
. Ad esempio, se è necessario configurare un certificato solo in modalità Fast eseguendo update-ca-certificates
, ma non in modalità normale, è possibile aggiungere il codice seguente in solodocker-compose.vs.debug.yml:
services:
webapplication1:
entrypoint: "sh -c 'update-ca-certificates && tail -f /dev/null'"
labels:
...
Per altre informazioni, vedere punto di ingresso contenitore
Passaggi successivi
Per informazioni sulle proprietà di MSBuild in genere, vedere proprietà di MSBuild.
Vedere anche
proprietà di compilazione degli strumenti contenitore
impostazioni di avvio di Strumenti contenitore
Gestire i profili di avvio per Docker Compose in Visual Studio