我按照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服务器:不工作 - 奇怪......
答案 0 :(得分:1)
问题是点之前的文档中缺少空格,应该引用当前文件夹。
错误(来自泊坞窗图片描述的1:1副本)
RUN dotnet publish --output /out/. --configuration Release
<强>正确强>
RUN dotnet publish --output /out/ . --configuration Release
以下是缺少的空间: - 输出/输出/ {空格} 。