Ошибка сборки сборщика ядра 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:
- Выгрузите docker-compose, отредактируйте DockerTargetOS для Linux, затем перезагрузите проект
- Перейдите в docker-compose.yml. Убедитесь, что обратная косая черта является прямой. Должен выглядеть как "WebApplication/Dockerfile"
-
В 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
-
Щелкните правой кнопкой мыши значок панели задач> Настройки> Общие диски> выберите диск, на котором находится проект.
Ответ 5
Если докер работает на компьютере с Windows, вам нужно изменить значение "DockerTargetOS" на "Windows" в файле .dcproj.
Выгрузите проект Docker из Visual Studio и отредактируйте проект и установите значение "Windows" в "DockerTargetOS".
<DockerTargetOS>Windows</DockerTargetOS>