ASP.NET Coreとdockerを初めて使用します。単純なASP.NET Core 2.0アプリを作成し、Windowsでdockerを使用しようとしました。しかし、私はこのエラーを受け取ります:
Your Docker server Host is configured for 'Linux', however the docker-compose project targets 'Windows'.
かなり有益なエラーのように見えますが、「Windows用ホストを構成する」場所が見つかりません
基本的に、セレスティン・ボチスとパベル・アガルコフの答えは素晴らしいです。ただし、少なくとも.netコア2.2以降、dockerのOSは.csprojファイルに保存されます。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
...
</PropertyGroup>
...
</Project>
また、Dockerファイルを変更することも忘れないでください。画像は正しいものでなければなりません。 .net core 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
Windowsをターゲットとするプロジェクトを作成し、後でLinuxをターゲットに切り替えると、このエラーが発生しました。代わりにLinuxコンテナーを使用する場合、手順はもう少し複雑です。
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
Dockerトレイアイコンを右クリックして、[設定]> [共有ドライブ]を選択し、プロジェクトが存在するドライブを選択します。
DockerがWindowsマシンで実行されている場合、.Docprojファイルで「DockerTargetOS」の値を「Windows」に変更する必要があります。
Visual Studioからdockerプロジェクトをアンロードし、プロジェクトを編集して、値「Windows」を「DockerTargetOS」に設定します。
<DockerTargetOS>Windows</DockerTargetOS>