ASP.NET Core et docker sont nouveaux pour moi . J'ai créé une application ASP.NET Core 2.0 simple et j'essaie d'utiliser Docker avec Windows. Cependant, j'obtiens cette erreur:
Your Docker server Host is configured for 'Linux', however the docker-compose project targets 'Windows'.
Bien que cela semble être une erreur assez informative, je ne trouve pas où "configurer l'hôte pour Windows"
Il s’agit du fichier docker-compose.dcproj
dans lequel vous pouvez configurer le système d’exploitation que vous souhaitez cibler:
<DockerTargetOS>Linux</DockerTargetOS>
Pour basculer le démon docker vers le même système d'exploitation, vous pouvez utiliser l'icône de la barre d'état système ou la fenêtre Paramètres de Docker (accessible depuis le même menu):
J'ai eu cette erreur lorsque j'ai créé le projet pour cibler Windows et que plus tard, je voulais le basculer vers une cible sous Linux. Les étapes sont un peu plus complexes si vous souhaitez utiliser des conteneurs Linux à la place:
Sur le fichier Dockerfile, pour la base, utilisez "Microsoft/aspnetcore: 2.0" et pour la construction, utilisez "Microsoft/aspnetcore-build: 2.0".
FROM Microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM Microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY WebApplication7/WebApplication.csproj WebApplication/
RUN dotnet restore WebApplication/WebApplication.csproj
COPY . .
WORKDIR /src/WebApplication
RUN dotnet build WebApplication.csproj -c Release -o /app
Cliquez avec le bouton droit de la souris sur l'icône de la barre de menu Docker> Paramètres> Lecteurs partagés> Sélectionnez le lecteur dans lequel réside votre projet.
En gros, la réponse de Celestin Bochis et de Pavel Agarkov est excellente. Cependant, depuis .net core 2.2 au moins, le système d'exploitation de docker est stocké dans le fichier .csproj.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
...
</PropertyGroup>
...
</Project>
Et n'oubliez pas de modifier votre fichier docker. Les images devraient être les bonnes. Pour .net core 2.2, c’est-à-dire:
Linux:
Microsoft/dotnet:2.2-aspnetcore-runtime AS base
Microsoft/dotnet:2.2-sdk AS build
Windows:
Microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803
Microsoft/dotnet:2.2-sdk-nanoserver-1803