Générer un projet de conteneur depuis la ligne de commande
Si vous souhaitez générer un projet conteneur avec un Dockerfile en dehors de Visual Studio, vous pouvez utiliser docker build
, MSBuild
, dotnet build
, ou dotnet publish
pour générer à partir de la ligne de commande.
Si vous utilisez le type de build du Kit de développement logiciel (SDK) .NET, vous n’avez pas de fichier Dockerfile donc vous ne pouvez donc pas utiliser docker build
; à la place, utiliser MSBuild
, dotnet build
ou dotnet publish
pour générer sur la ligne de commande.
Utiliser le générateur Docker
Pour créer une solution conteneurisée à partir de la ligne de commande, vous pouvez généralement utiliser la commande docker build <context>
pour chaque projet de la solution. Vous fournissez l’argument de contexte de génération. Le contexte de génération d’un fichier Dockerfile est le dossier sur l’ordinateur local utilisé comme dossier de travail pour générer l’image. Par exemple, il s’agit du dossier à partir duquel vous copiez les fichiers lorsque vous copiez dans le conteneur. Dans les projets .NET Core, le dossier qui contient le fichier de solution (.sln) est utilisé par défaut. Exprimé sous la forme d’un chemin d’accès relatif, cet argument est généralement « . » pour un fichier Dockerfile dans un dossier de projet et le fichier solution dans son dossier parent. Pour les projets .NET Framework, le contexte de build par défaut est le dossier du projet, et non le dossier de solution.
docker build -f Dockerfile ..
Vous pouvez définir le contexte de build dans le fichier projet en définissant la propriété DockerfileContext
. Par exemple,
<PropertyGroup>
<DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>
Les chemins relatifs dans le Dockerfile sont relatifs au contexte de build. Ainsi, si vous modifiez le contexte, il faut penser à mettre à jour les chemins relatifs en conséquence.
Avec Visual Studio 17.11 et les versions ultérieures, lorsque vous ajoutez la prise en charge de Docker à un projet, vous pouvez spécifier un dossier pour le contexte de build. Si vous souhaitez modifier le contexte de build, vous pouvez supprimer le Dockerfile (s’il ne contient pas d’autres modifications que vous souhaitez conserver) et réexécuter Ajouter la prise en charge de Docker, cette fois en spécifiant le nouveau contexte de build. Le nouveau Dockerfile aura des chemins relatifs mis à jour pour correspondre au nouveau contexte de build.
Utiliser MSBuild
Remarque
Cette section explique comment personnaliser vos conteneurs Docker lorsque vous choisissez le type de build du conteneur Dockerfile. Si vous utilisez le type de build du Kit de développement logiciel (SDK) .NET, les options de personnalisation sont différentes et les informations contenues dans cet article ne s’appliquent pas. Au lieu de ça, voir Mettre en conteneur une application .NET avec dotnet publish.
Les fichiers Dockerfile créés par Visual Studio pour les projets .NET Framework (et pour les projets .NET Core créés avec des versions de Visual Studio antérieures à Visual Studio 2017 Update 4) ne sont pas des fichiers Dockerfiles multi-index. Les étapes de ces fichiers Dockerfiles ne compilent pas votre code. Au lieu de cela, quand Visual Studio génère un fichier Dockerfile .NET Framework, il compile d’abord votre projet à l’aide de MSBuild. Lorsque cela réussit, Visual Studio génère ensuite le fichier Dockerfile, qui copie simplement la sortie de génération de MSBuild dans l’image Docker résultante. Étant donné que les étapes de compilation de votre code ne sont pas incluses dans le fichier Dockerfile, vous ne pouvez pas générer des fichiers Dockerfile .NET Framework à l’aide de docker build
en ligne de commande. Vous devez utiliser MSBuild pour générer ces projets.
Pour générer une image pour un projet de conteneur Docker unique, vous pouvez utiliser MSBuild avec l’option de commande /t:ContainerBuild
. Cette commande indique à MSBuild de générer la cible ContainerBuild
plutôt que la cible par défaut Build
. Par exemple :
MSBuild MyProject.csproj /t:ContainerBuild /p:Configuration=Release
Une sortie similaire à celle affichée dans la fenêtre Sortie s’affiche lorsque vous générez votre solution à partir de l’IDE Visual Studio. Utilisez toujours /p:Configuration=Release
, car dans les cas où Visual Studio utilise l’optimisation de génération multi-étapes, les résultats lors de la génération de la configuration Débogage peuvent ne pas être ceux attendus. Consultez l’article Personnaliser les images de conteneur pour le débogage.
Si vous utilisez un projet Docker Compose, utilisez cette commande pour générer des images :
msbuild /p:SolutionPath=<solution-name>.sln /p:Configuration=Release docker-compose.dcproj
Pour afficher les journaux MSBuild, consultez l’article Obtention de journaux de génération avec MSBuild.