讲师中心 微信公众号
AI工具推荐 视频效率加速

怎么在Docker中运行基于C#的.NET高性能后端服务教程

阿婷同学_3129

阿婷同学_3129

发布时间:2026-05-09 12:59:05

|

831人浏览过

|

来源于php中文网

原创

关键在于镜像选型、多阶段构建、端口与环境配置:生产用aspnet/runtime镜像而非sdk;Dockerfile分build/final两阶段,COPY发布产物并EXPOSE 80;启动时设ASPNETCORE_URLS=http://*:80且-p映射端口,避免localhost绑定和镜像体积过大。

怎么在docker中运行基于c#的.net高性能后端服务教程

在 Docker 中运行基于 C# 的 .NET 高性能后端服务,关键不是“能不能跑”,而是“启动快、体积小、监听对、不报错”。核心落在镜像选型、多阶段构建、端口与环境配置这三件事上。用对方法,一个 Web API 服务从构建到可访问,2 分钟内就能完成。

选对基础镜像:别让 SDK 镜像进生产

生产环境必须用 runtime 或 aspnet 镜像,而非 sdk 镜像:

  • mcr.microsoft.com/dotnet/aspnet:8.0:适用于 ASP.NET Core Web API、MVC 等含 HTTP 托管的项目(已内置 Kestrel 和依赖)
  • mcr.microsoft.com/dotnet/runtime:8.0:适用于控制台、Worker Service、gRPC Server 等轻量后台服务
  • 绝对避免 FROM mcr.microsoft.com/dotnet/sdk:8.0 作为最终运行镜像——它带编译器、体积超 700MB、有安全风险

写好 Dockerfile:多阶段构建是默认动作

一个高性能服务的 Dockerfile 应该分三段:构建 → 发布 → 运行。这样能利用层缓存、减小最终镜像体积(通常压到 150MB 左右):

Docker Encyclopedia
Docker Encyclopedia

Docker 文档优先工作流:针对 Docker 特定问题、故障排除、命令规划、镜像/构建、容器/运行时操作及 Compose 等

下载
  • 第一阶段(build)用 sdk 镜像:COPY *.csproj . && dotnet restore,再 COPY . . && dotnet publish -c Release -o /app/publish
  • 第二阶段(final)用 aspnet 镜像:COPY --from=build /app/publish .,WORKDIR /app
  • 必须设 EXPOSE 80,并确保启动时监听通配地址:ASPNETCORE_URLS=http://*:80(环境变量方式最稳妥)
  • 启动命令用 ENTRYPOINT ["dotnet", "YourApp.dll"],不用 CMD,防止被 run 命令覆盖

启动容器时:端口映射和监听地址要配对

容器内监听 http://*:80 ≠ 宿主机能通过 localhost:5000 访问。必须同步做两件事:

  • 运行命令加 -p 5000:80(左边宿主机端口,右边容器内端口,即 EXPOSE 的值)
  • 确认应用没卡在 localhost 绑定:检查 Program.cs 是否调用了 .UseUrls("http://*:80"),或更推荐直接设环境变量 -e ASPNETCORE_URLS=http://*:80
  • Linux 服务器需确认防火墙放行目标端口;Windows + Docker Desktop(WSL2 后端)下 localhost 默认可达

排查常见失败:先看日志,再查端口

容器启动后立刻退出?访问返回 404 或连接被拒绝?90% 是配置问题,按顺序查:

  • 执行 docker logs <container-id></container-id>,重点找 FileNotFoundException(DLL 没拷全)、InvalidOperationException(配置缺失)、或 Kestrel 启动失败提示
  • 确认 dotnet publish 输出路径与 COPY 指令完全一致(比如 publish 到 ./publish,Dockerfile 就得 COPY ./publish /app/)
  • 用 docker exec -it <container-id> ls /app</container-id> 进容器看文件是否真在、DLL 名称是否拼写正确(区分大小写)

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2723

2023.08.11

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6870

2024.03.19

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

6346

2024.03.19

c#是什么意思
c#是什么意思

C#是一种通用的面向对象编程语言,它在.NET框架上运行,可用于开发各种类型的应用程序。本专题为大家提供c#相关的各种文章、以及下载和课程。

1072

2023.08.08

什么是c#
什么是c#

C#(读作C Sharp)是一种现代的、通用的、面向对象的编程语言。它由微软公司开发,于2000年首次发布,主要用于开发Windows桌面应用程序、Web应用程序、移动应用程序以及游戏开发等领域。C#是一种类型安全和托管的编程语言,它结合了C++的强大性能和C语言的简单易学特点,并引入了许多新的特性和概念,如委托、属性、泛型和异步编程等,以提高开发效率和代码可维护性。

3151

2023.08.31

C#中base关键字的用法
C#中base关键字的用法

在C#中,base关键字用于访问当前类的基类成员,这包括基类的字段、属性、方法、构造函数、索引器以及事件。想了解更多C#的相关内容,可以阅读本专题下面的文章。

905

2024.03.13

C#Task用法
C#Task用法

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。想了解更多C#中各种用法的相关内容,可以阅读本专题下面的文章。

2655

2024.03.14

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

332

2026.02.03

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn