Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Rasperry Pi上dockerize.net core mvc应用程序之后,wwwroot文件夹中没有静态文件_C#_Asp.net_Docker_Asp.net Core_Raspberry Pi - Fatal编程技术网

C# Rasperry Pi上dockerize.net core mvc应用程序之后,wwwroot文件夹中没有静态文件

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”

我是docker的新手,我有一个无法解决的问题。我创建了.net核心MVC应用程序,这个应用程序应该可以在raspberry pi上运行,所以我将我的应用程序停靠在HypriotOS上的raspberry上,一切正常,但是找不到wwwroot(默认静态文件文件夹)中的一些图像(404)。在wwwroot文件夹中,我有一些css、js和图像文件,css、js和一些图像可用,但很少有.png文件不。我不知道为什么

  • .net核心版本是2.2
  • 我在Dockerfile中添加了行卷[“/wwwroot”]
  • 在Startup.Configure()方法中,我有行app.UseStaticFiles()
我的Dockerfile

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
可以直接从主机复制到正在运行的容器中,但是从初始映像中创建的新容器将不包含这些文件。如果所有问题都解决了,让我知道,这样我们就可以为每个有类似问题的人创建一个“官方”答案:)