C# Rasperry Pi上dockerize.net core mvc应用程序之后,wwwroot文件夹中没有静态文件
我是docker的新手,我有一个无法解决的问题。我创建了.net核心MVC应用程序,这个应用程序应该可以在raspberry pi上运行,所以我将我的应用程序停靠在HypriotOS上的raspberry上,一切正常,但是找不到wwwroot(默认静态文件文件夹)中的一些图像(404)。在wwwroot文件夹中,我有一些css、js和图像文件,css、js和一些图像可用,但很少有.png文件不。我不知道为什么C# Rasperry Pi上dockerize.net core mvc应用程序之后,wwwroot文件夹中没有静态文件,c#,asp.net,docker,asp.net-core,raspberry-pi,C#,Asp.net,Docker,Asp.net Core,Raspberry Pi,我是docker的新手,我有一个无法解决的问题。我创建了.net核心MVC应用程序,这个应用程序应该可以在raspberry pi上运行,所以我将我的应用程序停靠在HypriotOS上的raspberry上,一切正常,但是找不到wwwroot(默认静态文件文件夹)中的一些图像(404)。在wwwroot文件夹中,我有一些css、js和图像文件,css、js和一些图像可用,但很少有.png文件不。我不知道为什么 .net核心版本是2.2 我在Dockerfile中添加了行卷[“/wwwroot”
- .net核心版本是2.2
- 我在Dockerfile中添加了行卷[“/wwwroot”]
- 在Startup.Configure()方法中,我有行app.UseStaticFiles()李>
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy everything else and build app
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "TestApp.dll"]
用于生成和运行Docker映像的命令:
docker build -t testapp .
docker run -p 8080:80 --name testapp testapp
Dockerize传递正确,没有错误。该应用程序可以从外部访问,一切正常,但某些图形不显示(404未找到)。检查.dockerginore文件是否有任何可能与缺少的文件/路径匹配的内容。这就是我解决这个问题的原因。包含静态文件的目录被复制到映像中了吗?如何检查?您可以登录到容器bash,然后
ls…
。要将bash放入容器:docker exec-it/bin/bash
谢谢,所以在图像中我只有很少的静态文件(我没有所有的.png文件)。那么为什么创建的图像没有所有的文件呢?我应该手动添加它们吗?当您使用dockerfile创建图像时,在COPY.行中/代码>您正在将每个资源从主机复制到映像中。我猜你是在复制目录wwwroot
对吧?此时此刻,该目录必须包含您需要的所有内容。使用docker cp
可以直接从主机复制到正在运行的容器中,但是从初始映像中创建的新容器将不包含这些文件。如果所有问题都解决了,让我知道,这样我们就可以为每个有类似问题的人创建一个“官方”答案:)