无法使用 Blazor WASM 启动 Docker 映像

问题描述 投票:0回答:1

早上好,

我无法在 Docker 上启动我的(已发布的)Blazor WebAssembly 映像。看了几个和我情况一样的教程,还是无法启动镜像。

目标是将我的 Blazor WASM 应用程序放置在 Synology NAS 中的 docker 上。 我不太了解 docker 和 dockerfiles

这是必要文件的位置:

\\PLASSYS-SERVEUR\Temporaire\Matis\Blazor\PlassysTools\PlassysTools.csproj
\\PLASSYS-SERVEUR\Temporaire\Matis\Blazor\PlassysTools\Dockerfile
\\PLASSYS-SERVEUR\Temporaire\Matis\Blazor\PlassysTools\bin\Release\net7.0\PlassysTools.dll

这是我的错误和文件:

Dockerfile:

ROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 9321

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src

COPY ["PlassysTools.csproj", "./"]
RUN dotnet restore

COPY . .

RUN dotnet build -c Release

FROM build AS publish
RUN dotnet publish -c Release -o /app/publish


COPY --from=build /src/bin/Release/net7.0/wwwroot /app/wwwroot

RUN dotnet --list-sdks
RUN dotnet --version

FROM base AS final
WORKDIR /app
ENTRYPOINT ["dotnet", "PlassysTools.dll"]

PlassysTools.csproj:

<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.10" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.10" PrivateAssets="all" />
    <PackageReference Include="CsvHelper" Version="30.0.1" />
  </ItemGroup>

<ItemGroup>
    <None Update="wwwroot\asset\Gas.csv">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
</ItemGroup>
</Project>

Screenshot of my Docker application in Synology NAS (instant crash although my dll file is in the right location)

在将其重建为映像之前,我多次更改了我的docker文件,我认为错误可能来自

COPY. .
我在计算机上创建映像,然后将其发送到 NAS

PS C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools> dotnet publish -c Release -o ./publish
Version MSBuild 17.7.1+971bf70db pour .NET
  Identification des projets à restaurer...
  Tous les projets sont à jour pour la restauration.
C:\Program Files\dotnet\sdk\7.0.400\Current\SolutionFile\ImportAfter\Microsoft.NET.Sdk.Solution.targets(36,5): warning
NETSDK1194: l’option « --output » n’est pas prise en charge lors de la génération d’une solution. Si vous spécifiez un
chemin de sortie au niveau de la solution, tous les projets copient les sorties dans le même répertoire, ce qui peut en
traîner des builds incohérentes. [C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools\PlassysTools.sln]
  PlassysTools -> C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools\bin\Release\net7.0\PlassysTools.dll
  PlassysTools (Blazor output) -> C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools\bin\Release\net7.0\wwwroot
  L'optimisation de la taille des assemblys peut modifier le comportement de l'application. Assurez-vous de tester aprè
  s la publication. Voir : https://aka.ms/dotnet-illink
  Compressing Blazor WebAssembly publish artifacts. This may take a while...
  PlassysTools -> C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools\publish\
PS C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools> docker build -t plassystools:latest .
[+] Building 0.1s (7/7) FINISHED                                                                         docker:default
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 957B                                                                               0.0s
 => [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:7.0                                               0.0s
 => [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:7.0                                                            0.0s
 => CACHED [base 2/2] WORKDIR /app                                                                                 0.0s
 => CACHED [final 1/1] WORKDIR /app                                                                                0.0s
 => exporting to image                                                                                             0.0s
 => => exporting layers                                                                                            0.0s
 => => writing image sha256:c544492c75f93ca7d30b8667d9e1829138190c61979e92fa034b110900697622                       0.0s
 => => naming to docker.io/library/plassystools:latest                                                             0.0s

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview
PS C:\Users\PLASSYS BESTEK\Desktop\Matis\Blazor\PlassysTools> docker save -o plassystools-image.tar plassystools:latest

感谢那些花时间帮助我的人<3

docker dockerfile blazor blazor-webassembly synology
1个回答
0
投票

您可能无法使用 Blazor WASM 启动 Docker 映像,可能有以下几种原因:

  • Docker 映像未正确构建。 确保您按照 Microsoft 文档中所述的正确步骤构建 Docker 映像。
  • Docker 映像缺少必需的依赖项。 确保您的 Docker 映像包含 Blazor WASM 应用程序的所有必需依赖项,例如 .NET Core SDK 和运行时。
  • 您的应用程序代码有问题。确保您的 Blazor WASM 应用程序代码有效且没有错误。
  • 您的 Docker 配置有问题。 确保您的 Docker 配置正确,包括端口映射和环境变量。

如果您在启动 Docker 映像时仍然遇到问题,可以尝试以下故障排除步骤:

  1. 检查 Docker 日志。 Docker 日志可能包含有关阻止映像启动的错误的信息。您可以通过运行以下命令查看 Docker 日志:
docker logs <image-name>
  1. 尝试以交互方式运行图像。这将允许您查看图像的输出并排除任何错误。要以交互方式运行图像,请使用以下命令:
docker run -it --rm <image-name>
  1. 调试应用程序代码。如果启动映像时仍然遇到问题,您可以尝试调试应用程序代码以确定错误来源。您可以使用 Visual Studio 等调试器来调试 Blazor WASM 应用程序代码。

以下是一些用于排除使用 Blazor WASM 启动 Docker 映像时的常见错误的其他提示:

  • 如果您收到有关缺少依赖项的错误,请确保该依赖项已安装在您的 Docker 映像中。您可以通过向 Dockerfile 添加
    RUN
    指令来安装依赖项来完成此操作。
  • 如果您收到有关端口冲突的错误,请确保您映射到的端口尚未在使用中。您可以在 Dockerfile 或
    docker run
    命令中更改端口映射。
  • 如果您收到有关缺少环境变量的错误,请确保在 Docker 映像中定义了该环境变量。您可以通过向 Dockerfile 添加
    ENV
    指令或将环境变量传递给
    docker run
    命令来完成此操作。

如果您在使用 Blazor WASM 启动 Docker 映像时仍然遇到问题,请提供有关您遇到的错误的更多信息,我将尽力帮助您解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.