Ошибка сборки сборщика ядра ASP.NET

Я новичок в ASP.NET Core и докере. Я создал простое приложение ASP.NET Core 2.0 и попытаюсь использовать докер с ним в Windows. Однако я получаю эту ошибку:

Your Docker server host is configured for 'Linux', however the docker-compose project targets 'Windows'.

Хотя это кажется довольно информативной ошибкой, я не могу найти, где "настроить хост для Windows"

Ответ 1

Это файл docker-compose.dcproj, в котором вы можете настроить целевую ОС:

<DockerTargetOS>Linux</DockerTargetOS>

Чтобы переключить демон докеров на ту же ОС, вы можете использовать значок док-станции или окно настроек Docker (доступное из того же меню):
введите описание изображения здесь

Ответ 2

Убедитесь, что выбрали правильную ОС при включении поддержки докера:

OS dropdown

Ваш демон Docker также должен работать с контейнерами Linux.

Ответ 3

Ну, в основном, ответы Селестина Бочиса и Павла Агаркова велики. Однако, поскольку .net core 2.2, по крайней мере, ОС docker хранится в файле .csproj.

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    ...
   </PropertyGroup>

   ...
</Project>

А также не забудьте изменить файл Docker. Изображения должны быть правильными. Для ядра .net 2.2 То есть:

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

Ответ 4

Я получил эту ошибку, когда создал проект для Windows и позже захотел переключить его на Linux. Шаги немного сложнее, если вы хотите использовать вместо них контейнеры Linux:

  1. Выгрузите docker-compose, отредактируйте DockerTargetOS для Linux, затем перезагрузите проект
  2. Перейдите в docker-compose.yml. Убедитесь, что обратная косая черта является прямой. Должен выглядеть как "WebApplication/Dockerfile"
  3. В Dockerfile для базы используйте "microsoft/aspnetcore: 2.0", а для сборки - "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. Щелкните правой кнопкой мыши значок панели задач> Настройки> Общие диски> выберите диск, на котором находится проект.

Ответ 5

Если докер работает на компьютере с Windows, вам нужно изменить значение "DockerTargetOS" на "Windows" в файле .dcproj.

Выгрузите проект Docker из Visual Studio и отредактируйте проект и установите значение "Windows" в "DockerTargetOS".

<DockerTargetOS>Windows</DockerTargetOS>