【问题标题】:No static files from the wwwroot folder after dockerize .net core mvc application on Rasperry Pi在 Raspberry Pi 上 dockerize .net core mvc 应用程序后 wwwroot 文件夹中没有静态文件
【发布时间】:2019-10-03 09:06:26
【问题描述】:

我是 docker 新手,遇到一个无法处理的问题。我创建了 .net core MVC 应用程序,这个应用程序应该可以在树莓派上运行,所以我在 HypriotOS 上的树莓派上对我的应用程序进行了 docker 化,一切都很好,但是没有找到来自 wwwroot(默认静态文件夹)的一些图像(404)。在 wwwroot 文件夹中,我有一些 css、js 和图像文件,并且 css、js 和一些图像可用,但没有几个 .png 文件。我不知道为什么。

  • .net核心版本为2.2
  • 我厌倦了在我的 Dockerfile 中添加行 VOLUME ["/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 Not Found)。

【问题讨论】:

  • 包含静态文件的目录是否被复制到镜像中?
  • 如何查看?
  • 你可以登录到容器 bash 然后ls...。要 bash 进入容器:docker exec -it <container name> /bin/bash
  • 谢谢,所以在图片中我只有几个静态文件(我没有所有的 .png 文件)。那么为什么创建的图像没有所有文件?我应该手动添加它们吗?
  • 当您使用 dockerfile 创建映像时,在COPY . ./ 行中,您将主机中的所有资源复制到映像中。我猜你在哪里复制目录wwwroot 对吗?在那一刻,该目录必须包含您需要的所有内容。使用docker cp,您可以直接从您的主机复制到正在运行的容器,但是从初始映像中新创建的容器将不包含这些文件。如果一切都解决了,请告诉我,这样我们就可以为遇到类似问题的每个人创建一个“官方”答案:)

标签: c# asp.net docker asp.net-core raspberry-pi


【解决方案1】:

检查您的 .dockerignore 文件是否有任何可能与丢失的文件/路径匹配的内容。这就是为我解决这个问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2023-03-18
    • 2018-07-12
    • 1970-01-01
    • 2019-06-10
    相关资源
    最近更新 更多