为什么您的 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\nDocker 是一个用于应用程序容器化的平台。容器是一个隔离的环境,其中包含您的应用程序及其运行所需的一切:运行时、库、环境变量、配置文件。与虚拟机不同,容器共享主机操作系统的内核,因此它们启动更快且占用更少的空间。
\n\n对于 .NET 开发人员 来说,Docker 提供了几个杀手级功能:
\n\n- \n
- 消除“在我机器上能运行”的问题 — 容器保证了统一的环境 \n
- 简化 CI/CD — 您构建一次镜像,然后在任何地方使用它 \n
- 微服务架构 — 每个 C# 服务都运行在自己的容器中 \n
- 扩展性 — 几秒钟内轻松启动您的 API 的 10 个副本 \n
- 隔离性 — 一个项目的依赖项不会与另一个项目冲突 \n
如果您还没有使用 .NET 应用程序容器化,现在是时候开始了。我们马上开始。
\n\n准备工作:需要安装什么
\n\n在开始 C# 容器化 之前,请确保您已安装:
\n\n- \n
- Docker Desktop — 从 官方网站 下载。对于 Windows,请务必启用 WSL 2(安装时会有提示)。 \n
- .NET SDK 8.0(或 7.0/9.0 — 不重要)— 从 Microsoft 下载。 \n
- VS Code 或 Visual Studio 2022 — 用于方便地处理代码。 \n
在终端中使用以下命令检查安装:
\n\ndocker --version\ndotnet --version\n\n如果两个命令都返回了版本号 — 那么一切就绪,可以进行 面向 .NET 的 Docker 开发 了。
\n\n创建一个用于容器化的简单 C# 应用程序
\n\n为了演示,我们使用一个最小的 ASP.NET Core Web API。在空文件夹中创建项目:
\n\ndotnet new webapi -n MyDockerApp\ncd MyDockerApp\n\n打开 Program.cs 文件并将其简化为以下形式(以便清晰明了):
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from Dockerized C# App!");\n\napp.Run();\n\n在本地运行以确保一切正常:
\n\ndotnet run\n\n在浏览器中访问 http://localhost:5000(或控制台显示的端口)。看到问候语了吗?太好了。现在我们将把这个应用程序打包到 Docker 中。
为 C# 应用程序编写 Dockerfile
\n\nDockerfile 是构建镜像的指令。对于 <