57 votes

Erreur de construction du menu fixe ASP.NET Core

Je suis nouveau dans ASP.NET Core et docker. 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»

83voto

Pavel Agarkov Points 1594

Il s’agit du fichier docker-compose.dcproj où vous pouvez configurer le système d’exploitation que vous souhaitez cibler:

 <DockerTargetOS>Linux</DockerTargetOS>
 

Pour basculer le démon docker sur 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 à partir du même menu):
entrez la description de l'image ici

20voto

BlackHawkDesign Points 452

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
 

11voto

Celestin Bochis Points 79

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

Liste déroulante OS

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

2voto

Si le menu fixe est en cours d'exécution sur la machine Windows, vous devez modifier la valeur de "DockerTargetOS" qui doit être "Windows" dans le fichier .dcproj.

Déchargez le projet de menu fixe de visual studio, éditez le projet et définissez la valeur "Windows" sur "DockerTargetOS".

 <DockerTargetOS>Windows</DockerTargetOS>
 

0voto

Frosteeze Points 143

J'ai eu cette erreur quand j'ai créé le projet cible Windows et plus tard a voulu changer de cible pour Linux. Les étapes sont un peu plus impliqués si vous souhaitez utiliser Linux plutôt des contenants:

  1. Décharger docker-composer, éditer le DockerTargetOS pour Linux, puis de recharger le projet
  2. Allez à menu fixe-composer.yml. Assurez-vous que la barre oblique inverse est une barre oblique. Doit ressembler à "WebApplication/Dockerfile"
  3. Sur le Dockerfile, pour l'utilisation de la base de "microsoft/aspnetcore:2.0" et pour construire, utiliser "microsoft/aspnetcore-version:2.0", il devrait donc ressembler à ceci:

    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-droit sur l'icône de la barre de menu fixe > paramètres > Lecteurs Partagés > choisir le lecteur de votre projet réside dans.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X