web-dev-qa-db-fra.com

Erreur de construction du menu fixe ASP.NET Core

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"

30
kagetoki

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):
 enter image description here

42
Pavel Agarkov

Assurez-vous de choisir le bon système d’exploitation lorsque vous activez le support de menu fixe:

 OS dropdown

Votre démon docker doit également cibler les conteneurs Linux.

5
Celestin Bochis

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:

  1. Décharger docker-composer, éditer DockerTargetOS sous Linux, puis recharger le projet
  2. Allez sur docker-compose.yml. Assurez-vous que la barre oblique inverse est une barre oblique. Devrait ressembler à "WebApplication/Dockerfile"
  3. 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
    
  4. 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.

0
Frosteeze

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
0
Maarten Kieft