使用 Docker 容器化 C# 应用程序:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么您的 C# 项目需要 Docker?

\n\n

想象一下这种情况:您在装有 Windows 11 的笔记本电脑上编写了一个很棒的 C# 应用程序,安装了所有库,配置了数据库,它运行得非常完美。但是,当您将项目交给使用 macOS 的同事或将其部署到 Linux 服务器时,噩梦就开始了:“我的 .NET 版本不同”、“SQL Server 在哪里?”、“你的代码中硬编码了文件路径”……听起来熟悉吗?

\n\n

这正是 使用 Docker 容器化 C# 应用程序 发挥作用的地方。Docker 允许您将应用程序及其所有依赖项、设置甚至操作系统打包到一个轻量级容器中。并且它在任何地方都能以相同的方式运行:在您的 PC 上、同事的服务器上、AWS 或 Azure 云中。

\n\n

在本文中,我们将从头到尾讲解如何使用 Docker 容器化 C# 应用程序。您将学习如何为 ASP.NET Core 创建 Dockerfile,如何优化镜像大小,以及如何通过一个命令运行所有内容。开始吧!

\n\n

什么是 Docker,为什么 C# 开发人员需要它?

\n\n

Docker 是一个用于应用程序容器化的平台。容器是一个隔离的环境,其中包含您的应用程序及其运行所需的一切:运行时、库、环境变量、配置文件。与虚拟机不同,容器共享主机操作系统的内核,因此它们启动更快且占用更少的空间。

\n\n

对于 .NET 开发人员 来说,Docker 提供了几个杀手级功能:

\n\n
    \n
  • 消除“在我机器上能运行”的问题 — 容器保证了统一的环境
  • \n
  • 简化 CI/CD — 您构建一次镜像,然后在任何地方使用它
  • \n
  • 微服务架构 — 每个 C# 服务都运行在自己的容器中
  • \n
  • 扩展性 — 几秒钟内轻松启动您的 API 的 10 个副本
  • \n
  • 隔离性 — 一个项目的依赖项不会与另一个项目冲突
  • \n
\n\n

如果您还没有使用 .NET 应用程序容器化,现在是时候开始了。我们马上开始。

\n\n

准备工作:需要安装什么

\n\n

在开始 C# 容器化 之前,请确保您已安装:

\n\n
    \n
  1. Docker Desktop — 从 官方网站 下载。对于 Windows,请务必启用 WSL 2(安装时会有提示)。
  2. \n
  3. .NET SDK 8.0(或 7.0/9.0 — 不重要)— 从 Microsoft 下载。
  4. \n
  5. VS Code 或 Visual Studio 2022 — 用于方便地处理代码。
  6. \n
\n\n

在终端中使用以下命令检查安装:

\n\n
docker --version\ndotnet --version
\n\n

如果两个命令都返回了版本号 — 那么一切就绪,可以进行 面向 .NET 的 Docker 开发 了。

\n\n

创建一个用于容器化的简单 C# 应用程序

\n\n

为了演示,我们使用一个最小的 ASP.NET Core Web API。在空文件夹中创建项目:

\n\n
dotnet new webapi -n MyDockerApp\ncd MyDockerApp
\n\n

打开 Program.cs 文件并将其简化为以下形式(以便清晰明了):

\n\n
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from Dockerized C# App!");\n\napp.Run();
\n\n

在本地运行以确保一切正常:

\n\n
dotnet run
\n\n

在浏览器中访问 http://localhost:5000(或控制台显示的端口)。看到问候语了吗?太好了。现在我们将把这个应用程序打包到 Docker 中。

\n\n

为 C# 应用程序编写 Dockerfile

\n\n

Dockerfile 是构建镜像的指令。对于 <

博客

书籍推荐