dotnet运行不会使用bower软件包
我有一个asp.net核心Web应用程序,我试图在Docker容器中运行。
从powershell,在项目文件,我可以运行> dotnet restore
然后> dotnet run
,它会运行一个docker容器:
PS E:\Projects\...> dotnet run Project MyProject (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation. Hosting environment: Production Content root path: E:\Projects\... Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down.
唯一的问题是,当我去localhost:5000
,似乎像凉亭包(如Angular)没有安装。 当网页/控制器都工作时,Angular的前端将不会运行。
它没有返回404找不到,它只是没有绑定任何的Angular的东西。
如果我从Visual Studio(2015)运行相同的项目,它包含/运行Angular,不用担心,网站看起来应该如此。 查看源代码,你可以看到已经包含了angular度文件。
我的DockerFile是:
FROM microsoft/aspnetcore-build WORKDIR /app COPY published . ENTRYPOINT ["dotnet", "MyProject.dll"]
但我认为这是一个dotnet run
命令的问题。
我怎样才能确保凉亭包装包括在docker集装箱内运行?
编辑1
我试图做dotnet build
然后bower install
然后dotnet run
没有运气。
之后,我尝试发布它与dotnet publish -o published
,然后从发布的目录中运行dotnet MyProject.dll
,它做了同样的事情。
当我从Visual Studio运行该项目时,该页面包含所有脚本:
... <script src="/lib/jquery/dist/jquery.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.js"></script> <script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script> <script src="/lib/bootstrap/dist/js/bootstrap.js"></script> <script src="/js/site.js?v=EWaMeWsJBYWmL2g_KkgXZQ5nPe-a3Ichp0LEgzXczKo"></script> <script src="/lib/angular/angular.js?v=IuVz88ct2cRJMIP8PVY9rcWTcd2eXzzvz3cdkmfoX2k"></script> ...
但是,当我运行它使用dotnet run
和dotnet publish
然后dotnet MyProject.dll
这些脚本不包括在页面源。
固定
原来我正在运行dotnet run
,这意味着它在生产模式下运行。
视图Views\Shared\Components\_EnvironmentFooter.cshtml
中有一个文件,这是所有脚本都包含在页面中的位置。 唯一的问题是脚本包含在开发环境中,而不是生产环境。
<environment names="Development"> <script src="~/lib/jquery/dist/jquery.js"></script> <script src="~/lib/jquery-validation/dist/jquery.validate.js"></script> <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script> <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script> <script src="~/js/site.js" asp-append-version="true"></script> <script src="~/lib/angular/angular.js" asp-append-version="true"></script> </environment> <environment names="Staging,Production"> <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js" asp-fallback-src="~/lib/jquery/dist/jquery.min.js" asp-fallback-test="window.jQuery"> </script> <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js" asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js" asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"> </script> <script src="~/js/site.min.js" asp-append-version="true"></script> </environment>
我在开发环境中包含了开发脚本 – 不再是一个问题。
Bower依赖通常由基于project.json
scripts
元素的dotnet publish
来处理。 如果您不想运行dotnet publish
,请尝试在dotnet restore
和dotnet run
之间运行bower install
。
原来,我并没有把鲍尔的脚本添加到生产代码中。 见上面的编辑。
- dotnet核心SDK /运行在Debian的debian中
- 从Docker容器连接到SQL Server数据库
- 在Docker容器内运行的Identity Server 4例外:无法加载DLL“System.Security.Cryptography.Native.OpenSsl”
- 在启动时可以初始化Consul Key Value存储吗?
- Docker撰写 – 为networking名称添加标识符
- Docker for windows:Linux与Windows容器之间的通信
- 如何减less.NET Core docker容器的内存使用量?
- 无法使用入口点运行泊坞窗容器
- 缺less相同版本的框架上的命名空间