使用docker

时间:2016-12-23 18:35:25

标签: linux docker asp.net-core publish asp.net-core-1.0

我按照this文章使用Docker设置了高性能的ASP.NET Core部署。这是有效的,直到我尝试使用调用docker run的{​​{1}}启动容器。我得到一个例外,查看路径不存在:

  

未处理的异常:System.Reflection.TargetInvocationException:调用的目标抛出了异常。 ---> System.ArgumentException:目录名称/ app / Views /无效。

这是真的,因为在dotnet MyAppName.dll区域创建的文件夹中只有dll文件而没有View文件夹:

dotnet publish

我无法理解这一点,因为View文件夹也包含在user@server:/etc/jenkins/workspace/App# ll publish-output | grep View -rwxr--r-- 1 root root 237K Aug 31 19:26 Microsoft.AspNetCore.Mvc.ViewFeatures.dll 中,就像wwwroot一样,也缺少:

publishOptions

我还尝试了 "publishOptions": { "include": [ "wwwroot", "Views/**/*.cshtml", "Areas/**/*.cshtml" ] }, 而不是"Views"但没有工作。根据我的理解,那些"Views/**/*.cshtml"应该导致在使用publishOptions时将这些文件夹复制到发布目录。

我做错了什么?

我正在使用dotnet publish图片进行构建,microsoft/aspnetcore-build:1.0.1用于启动应用,就像文章中推荐的最佳做法一样。

更新 似乎只是linux上的一个问题。我的Win10开发机器工作正常,在那里我得到了从主应用程序和区域按预期发布的任何视图文件夹。

更新#2 使用泊坞窗集线器上aspnetcore-build repo上的示例,它不起作用。

UPDATE#3 我使用Visual Studio在Windows 10开发机器上创建了一个新的ASP.NET Core MVC项目,然后将其传输到linux框:不工作,缺少视图。

更新#4 直接在linux框上使用microsoft/aspnetcore:1.0.1创建一个新应用:工作方式与预期一样!

更新#5 我在Windows计算机上运行dotnet new -t web,将创建的文件夹移动到linux服务器:不工作 - 奇怪......

1 个答案:

答案 0 :(得分:1)

问题是点之前的文档中缺少空格,应该引用当前文件夹。

错误(来自泊坞窗图片描述的1:1副本)

RUN dotnet publish --output /out/. --configuration Release

<强>正确

RUN dotnet publish --output /out/ . --configuration Release

以下是缺少的空间: - 输出/输出/ {空格}