Docker:运行dotnet发布-o / output会导致CLI出现非零错误

时间:2017-12-26 20:27:50

标签: asp.net docker .net-core docker-compose docker-for-windows

我正在使用Ubuntu 16.04 LTS,

Docker-compose v 1.18.0-rc2, build 189468b
Docker version 17.12.0-ce-rc1, build ee2f943

运行此命令:使用docker dotnet publish -o / output 会导致此错误:

ERROR: Service 'generator' failed to build: The command '/bin/sh -c 
dotnet publish -c Release -o out' returned a non-zero code: 145

enter image description here

我已经为Ubuntu安装了.NET SDK,但不确定如何解决此错误;它只是不会创建该发布文件夹;这里是dotnet --info

  

joel @ worker-2:〜/ workspace / asp(copy)/ api $ dotnet --info .NET命令   线条工具(2.0.2)

     

产品信息:版本:2.0.2提交SHA-1哈希:   a04b4bf512

     

运行时环境:操作系统名称:ubuntu操作系统版本:16.04操作系统   平台:Linux RID:ubuntu.16.04-x64基本路径:
  /usr/share/dotnet/sdk/2.0.2 /

     

Microsoft .NET核心共享框架主机

     

版本:2.0.0 Build:   e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d

Link to the same question worded differently with more error logs

2 个答案:

答案 0 :(得分:2)

您看到的错误是因为您的项目包含一个global.json文件,该文件将所需的SDK版本固定为2.0.2。但是,docker镜像包含较新的SDK版本(当前版本为2.1.3)。因为用于构建的docker镜像中不存在2.0.2 SDK,所以它只是出错。

答案 1 :(得分:1)

首先,如果您使用的是Ubuntu,则Windows的docker无关紧要。

我看到“Dockerize a .NET Core application”(以及回购dotnet/dotnet-docker-samples)中使用的dotnet publish -c Release -o out图片以

开头
FROM microsoft/aspnetcore-build:2.0 AS build-env

这是一个多拱的标签,这意味着它将拉取Windows或Linux容器,具体取决于主机(这里是Ubuntu)
但是你在previous question之后的pluralsight.com course docker-images-containers-aspdotnet-core中提到了,并且只有在Windows上完成时才会起作用(意味着Windows服务器2016/2017,能够执行Windows映像)