在 Docker 中运行 Blazor

2024-03-03

我使用 Visual Studio 2019(预览版)创建了第一个 Blazor 测试。回购协议是here https://github.com/mitkins/holly_test。当我在 VS 中点击 IISExpress 按钮时,一切都按预期工作。

但是,我想将我的应用程序部署到 Ubuntu/Dokku 服务器。因此,我一直在尝试弄清楚如何使用 Docker 设置我的服务器。到目前为止,我的 Dockerfile 中包含以下内容:

# Latest .NET Core from https://hub.docker.com/_/microsoft-dotnet-core-sdk/ (not the nightly one)
FROM mcr.microsoft.com/dotnet/core/sdk:3.0.100-preview6-disco AS build-env
WORKDIR /app
# Copy everything and build
COPY . ./
RUN dotnet restore "./HollyTest.Server/HollyTest.Server.csproj"
RUN dotnet publish "./HollyTest.Server/HollyTest.Server.csproj" -c Release -o out

# Latest ASP.NET Core from https://hub.docker.com/_/microsoft-dotnet-core-aspnet/ (not the nightly one)
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0.0-preview6-disco
ENV ASPNETCORE_URLS=http://+:5000
EXPOSE 5000
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "HollyTest.Server.dll"]

应用程序编译并且服务器运行,但每次我访问服务器时都会收到 404。所以我在本地计算机上运行了上述命令:

cd app
dotnet restore .\HollyTest.Server\HollyTest.Server.csproj
dotnet publish "./HollyTest.Server/HollyTest.Server.csproj" -c Release -o out
cd out
dotnet .\HollyTest.Server.dll

然后当我跑步时curl localhost:5000我看到以下内容:

Hosting environment: Production
Content root path: C:\Users\hmurphy\Documents\GitHub\app\out
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'Fallback {*path:nonfile}'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'Fallback {*path:nonfile}'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 223.05540000000002ms 404
Application is shutting down...

在Visual Studio生成的日志中,看起来更健康:

Hosting environment: Development
Content root path: C:\Users\hmurphy\Documents\GitHub\HollyTest\HollyTest.Server
Now listening on: http://localhost:50873
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:50873/
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'Fallback {*path:nonfile}'
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[6]
      The file /index.html was not modified
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'Fallback {*path:nonfile}'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 326.5401ms 304 text/html
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
.
.
.

我假设我缺少某种配置/缺少一个步骤。与“内容根路径”有关吗?在里面./out文件夹,没有HollyTest.Server folder.

我对 ASP.NET Core(或 .NET 中的现代 Web 开发)没有太多经验。有人可以帮助我并指出我正确的方向吗?


.NET Core Preview 6 上的 Blazor 存在众所周知的问题(https://github.com/aspnet/AspNetCore/issues/11636 https://github.com/aspnet/AspNetCore/issues/11636) and (https://github.com/aspnet/AspNetCore/issues/11185 https://github.com/aspnet/AspNetCore/issues/11185)

您要么等待 Preview 7,要么添加到您的 Dockerfile

# After publish
COPY out/wwwroot/_content/hollytestclient out/wwwroot/

然后运行docker run -p 8081:5000 -it holly_test:latest

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Docker 中运行 Blazor 的相关文章

  • 为什么在排序输入上插入到树中比随机输入更快?

    现在我一直听说从随机选择的数据构建二叉搜索树比有序数据更快 这仅仅是因为有序数据需要显式重新平衡以将树高度保持在最低限度 最近我实现了一个不可变的treap http en wikipedia org wiki Treap 一种特殊的二叉搜
  • 如何从对Web服务发出的请求中获取客户端IP地址

    我的 IIS 中托管有一个 Web 服务 当客户端直接使用我的服务时 我需要找出客户端 IP 地址 like http MyIpAddress MyApplication MyWebServiceClass asmx http MyIpAd
  • 为什么迭代器类型推导失败? [复制]

    这个问题在这里已经有答案了 为什么这在 C 中不起作用 为什么我不能限制foo的参数为std vector
  • ASP.NET 如何在 Web API 中读取多部分表单数据?

    我将多部分表单数据发送到我的 Web API 如下所示 string example my string HttpContent stringContent new StringContent example HttpContent fil
  • 这种对有效类型规则的使用是否严格遵守?

    C99和C11中的有效类型规则规定 没有声明类型的存储可以用任何类型写入 并且存储非字符类型的值将相应地设置存储的有效类型 抛开 INT MAX 可能小于 123456789 的事实不谈 以下代码对有效类型规则的使用是否严格符合 inclu
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 如何修复此 YCrCb -> RBG 转换公式?

    我使用的公式来自这个问题 https stackoverflow com questions 8838481 kcvpixelformattype 420ypcbcr8biplanarfullrange frame to uiimage c
  • Moq - 是否可以在不使用 It.IsAny 的情况下设置模拟

    我一直使用 Moq 进行单元测试 有时我会嘲笑有很多参数的方法 想象一下这样的方法 public class WorkClient public void DoSomething string itemName int itemCount
  • 代码块 - 使用大地址感知标志进行编译

    如何使用以下命令在 64 位系统上编译 32 位应用程序LARGE ADRESS AWARE使用代码块标记 我需要使用超过 2GB 的内存 应该是添加的情况 Wl large address aware到链接标志 我不使用 CodeBloc
  • 指向 VLA 的指针

    你可能知道 VLA 的优点和缺点 https stackoverflow com a 3082302 1606345在 C11 中它们是可选的 我认为使 VLA 成为可选的主要原因是 堆栈可能会爆炸 int arr n where n 10
  • 多个包含带有变量定义的头文件

    我只是构建一个简单的 C 项目 代码如下所示 head h ifndef HEAD H define HEAD H int my var 100 endif src1 cpp include head h src2 cpp include
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • PowerShell 与 MongoDB C# 驱动程序方法不兼容?

    由 C 泛型引起的最新 MongoDB 驱动程序的问题 Cannot find an overload for GetCollection and the argument count 1 我可能可以使用其他没有泛型的 GetCollect
  • 在 boost 元组、zip_iterator 等上使用 std::get 和 std::tie

    我有哪些使用选择std get lt gt and std tie lt gt 与增强结构一起 例子 我想使用基于范围的 for 循环在多个容器上进行迭代 我可以实施zip函数 它使用boost zip iterator include
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • 提升shared_from_this<>()

    有人可以用几句话概括一下如何提升shared from this lt gt 应该使用智能指针 特别是从使用绑定函数在 io service 中注册处理程序的角度来看 编辑 一些回复要求提供更多背景信息 基本上 我正在寻找 陷阱 即人们使用
  • 在 C++ 中什么时候首选传递指针而不是引用传递?

    我可以想象一种情况 其中输入参数可以为 NULL 以便首选传递指针而不是传递引用 有人可以添加更多案例吗 在传递的对象实际上将被修改的情况下 有些人更喜欢传递指针 当对象通过引用传递时 它们使用 pass by const referenc
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • 在地图上使用 find

    如何使用 find 和 aconst iterator如果你有一个地图定义为 typedef std pair

随机推荐

  • 如何在詹金斯中替换摩卡UTF8复选标记符号

    当我在詹金斯中运行摩卡测试时 在控制台输出上我可以看到 而不是 检查标记 utf 8 字符 如何将这些符号替换为人类可读的格式 修改默认报告者 最简单的方法 修改默认报告者 https github com mochajs mocha bl
  • 如何在 Java 中对 Hive 进行异步调用?

    我想以异步方式在服务器上执行 Hive 查询 Hive 查询可能需要很长时间才能完成 因此我不想阻止调用 我目前正在使用 Thirft 进行阻塞调用 在 client execute 上阻塞 但我还没有看到如何进行非阻塞调用的示例 这是阻止
  • 图片来自流问题

    我在从流创建图像时遇到问题 在我的 Windows 电脑上 它分叉得很好 在 ubuntu 服务器上 它抛出一个错误 System ArgumentException A null reference or invalid value wa
  • WPF MenuItem.Icon 尺寸

    所以我有一个 MenuItem 在 ContextMenu 中 如果它确实有影响 我不认为它有影响 我想使用 MenuItem Icon 属性在 MenuItem 中显示图标 下面是执行此操作的 XAML 代码
  • HttpClient PCL Cookie 未应用于请求

    我使用 NET HttpClient for PCL 2 2 15 作为跨 Windows Phone 8 Windows 8 和 NET 4 5 的通用库 但是 我没有看到 cookie 被应用于请求 我使用以下代码设置 HttpClie
  • 这段代码是什么意思“ofstream fout(getenv("OUTPUT_PATH"));”

    我对 cpp 还是个新手 如果有人能帮助我理解这行代码 我将不胜感激 ofstream fout getenv OUTPUT PATH 这段代码我几乎看到了每一个 Hackerrank 挑战 这段代码的目的是什么 我说 当有疑问时 简化 当
  • ListView 滚动混乱

    我扩展了基本适配器 我遇到了一些奇怪的问题 当我滚动此列表视图时 我的最后一个项目被第一个项目替换 下次当我滚动时 另一个项目等等 有时它是正确的 为什么这段代码会发生这种情况 Override public View getView fi
  • 如何让 DataAnnotations 在 asp.net 4.5 WebForms 中工作?

    我正在使用带有模型绑定和实体框架 5 的 net 4 5 WebForms 我的网络表单的一部分
  • Invoke-ASCmd :身份验证失败:用户界面不可用时需要用户 ID 和密码

    我正在尝试使用 Azure DevOps 通过 CICD 刷新 已 部署的表格模型的凭据 利用调用ASCmd在 PowerShell 中刷新凭据 当我提供租户 ID 应用程序 ID 和密钥时 该脚本在本地运行良好 但是 当我从 Azure
  • 无法构建:如何为新模块添加 Android 构建配置

    现在我正在将我的 Android 代码转换为模块化架构方法 尝试从 聊天 模块添加对 应用程序 模块的依赖项时遇到问题 我有以下 app 模块的构建配置 android lintOptions checkReleaseBuilds fals
  • 当 filesystem::path 被破坏时程序崩溃

    以下程序崩溃 include
  • 右值引用上的 std::vector::emplace_back

    我在类中有以下函数 void add state std string st state emplace back st state is a vector st根据我的理解 是一个左值 在这种情况下对字符串的右值引用 如果 我想搬家st到
  • 在 Angular2 中添加动态属性

    我有现有的 javascript 函数 用于使用 setAttribute 函数创建动态元素 现在我想将属性 ngModel 附加到此元素中以进行双向数据绑定 我尝试添加这个使用 obj setAttribute ngModel 模型名称
  • macOS Safari 缓存响应,而标头指定不缓存

    服务器对 GET 请求的响应具有以下标头 HTTP 1 1 200 OK Content Type application json charset utf 8 Pragma no cache Date Thu 08 Feb 2018 19
  • 使用我自己的 SSL 证书与 Google Cloud Run(完全托管)进行 SSL 固定

    我想要固定完全托管的 Google Cloud Run 集群的证书 我可以固定 Google 生成的 SSL 证书 但我不知道我是否可以依赖他们保留相同的证书直到其过期 而且我无法让客户端为他们将来生成的 SSL 证书做好准备 因为我不在
  • Unix,将文件分割成最大 N 字节的块,保持完整的行

    我想将文件拆分为最大 N 字节的块 同时保留完整的行 类似下面的内容在精确的字节边界上分解每个块的第一行和最后一行 split b 100m d data tsv data tsv 听起来像是一份工作split C split C 100m
  • 检索 Excel 中列等于某值的单元格列表

    我正在尝试在 Excel 中执行某些操作而不使用 VBA 宏 我怀疑这是可能的 但到目前为止还有一些空的 基本上 对于表中的值 我想有条件地检索 A 列中所有值的列表 其中 B 列等于我提供的值 例如 如果 B 列等于 0 我想要一个函数
  • 如何检查 Google Test 是否在我的代码中运行

    我有一段代码 如果正在进行单元测试 我不想运行它 我希望找到一些由 gtest 库设置的 define 标志 我可以检查 我找不到用于此目的的一个 但在查看 gtest 标头后 我找到了一个我认为可以像这样使用的 SomeClass Som
  • 如何同时拖动两个 3D 轴

    基本上 我在一个图中有两个 3d 轴 一个通过 matplotlib animation 构建的动画轴和一个并排的 3d 线图 我想添加功能 以便当您旋转一个轴时 另一个轴也会跟随它的旋转 例如 将当前视角发送到另一个轴的函数 例如 ang
  • 在 Docker 中运行 Blazor

    我使用 Visual Studio 2019 预览版 创建了第一个 Blazor 测试 回购协议是here https github com mitkins holly test 当我在 VS 中点击 IISExpress 按钮时 一切都按