繁体   English   中英

ASP.NET Core docker构建错误

[英]ASP.NET Core docker build error

我是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配置主机”的位置

它是docker-compose.dcproj文件,您可以在其中设置要定位的操作系统:

<DockerTargetOS>Linux</DockerTargetOS>

要将docker守护程序切换到相同的OS,您可以使用Docker托盘图标或Docker Settings窗口(可从同一菜单访问):
在此输入图像描述

基本上,Celestin Bochis和Pavel Agarkov的答案都很棒。 但是至少自.net core 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

启用docker support时,请确保选择正确的操作系统:

操作系统下拉菜单

您的docker守护程序也必须以Linux容器为目标。

当我创建项目以定位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托盘图标>设置>共享驱动器>选择项目所在的驱动器。

如果docker在windows机器上运行,那么你需要在.dcproj文件中更改“DockerTargetOS”的值应为“Windows”。

从visual studio卸载docker项目并编辑项目并将值“Windows”设置为“DockerTargetOS”。

<DockerTargetOS>Windows</DockerTargetOS>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM