当我启动我的容器时,页面启动时没有样式、脚本、图像和其他静态文件--加载它们的调用返回404。
我想说的是,当我访问应用程序文件夹时,wwwroot文件夹是存在的。
我在我的Release文件夹中测试了它(用dotnet命令)。但是在Docker中它不起作用。是的,我在我的Startup类中使用了UseStaticFiles
。
我的Dockerfile很简单,它只是运行应用程序。但我以前构建并发布了应用程序,wwwroot就在那里。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY bin/Release app/
ENTRYPOINT ["dotnet", "app/MyApp.SGC.Site.dll"]
应用程序运行,但出现许多错误:
有人能帮帮我吗?
2条答案
按热度按时间1dkrff031#
您必须运行
dotnet publish
命令,以便将所有必需的文件复制到您的应用程序文件夹中。您的发布文件夹中只有应用程序的dll文件,因此当您将其复制到Docker容器中时,不会复制
wwwroot
文件。如果您创建一个新的Web应用项目并勾选Docker支持选项,它将为您创建一个Docker文件。创建一个示例项目,以便您可以查看容器化应用程序的推荐方法。
以下是使用发布命令的示例:
n1bvdmb62#
对于使用Docker的人,您确信容器包含您的静态文件,但仍然得到404。
如果您有WORKDIR指令,请检查您的Dockerfile:
然后,在Program.cs(或Startup.cs)中,确保根路径以“/app”开头: