web-dev-qa-db-ja.com

ASP.NET Coreドッカービルドエラー

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用ホストを構成する」場所が見つかりません

37
kagetoki

docker-compose.dcprojターゲットとするOSをセットアップできるファイル:

<DockerTargetOS>Linux</DockerTargetOS>

Dockerデーモンを同じOSに切り替えるには、DockerトレイアイコンまたはDocker設定ウィンドウ(同じメニューからアクセス可能)を使用できます。
enter image description here

55
Pavel Agarkov

基本的に、セレスティン・ボチスとパベル・アガルコフの答えは素晴らしいです。ただし、少なくとも.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
10
Maarten Kieft

Dockerサポートを有効にするときは、正しいOSを選択してください。

OS dropdown

Dockerデーモンは、Linuxコンテナーもターゲットにする必要があります。

7
Celestin Bochis

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. Dockerトレイアイコンを右クリックして、[設定]> [共有ドライブ]を選択し、プロジェクトが存在するドライブを選択します。

0
Frosteeze

DockerがWindowsマシンで実行されている場合、.Docprojファイルで「DockerTargetOS」の値を「Windows」に変更する必要があります。

Visual Studioからdockerプロジェクトをアンロードし、プロジェクトを編集して、値「Windows」を「DockerTargetOS」に設定します。

<DockerTargetOS>Windows</DockerTargetOS>