Dockerfile 中构建 .NET 应用的关键指令有哪些?

来源:这里教程网 时间:2026-02-21 17:27:32 作者:

在 Dockerfile 中构建 .NET 应用,关键在于合理使用多阶段构建和相关指令来实现镜像的高效、安全与可维护。以下是构建 .NET 应用时最核心的几条指令及其作用。

1. FROM:指定基础镜像

选择合适的 .NET 基础镜像是第一步。通常使用官方 Microsoft 提供的 SDK 镜像进行构建,运行时使用更轻量的 runtime 镜像

示例:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
—— 构建阶段使用 SDK 镜像
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
—— 运行阶段使用 runtime 镜像

2. WORKDIR:设置工作目录

为容器内操作定义一个默认的工作路径,避免路径混乱。

示例:
WORKDIR /app
—— 在容器中创建并进入 /app 目录

3. COPY:复制本地文件到镜像

将项目文件(如 .csproj 和源码)复制到容器中,用于还原依赖和编译。

常见做法:
COPY *.csproj ./
—— 先复制项目文件以利用缓存优化构建速度
COPY . ./
—— 复制所有源码文件

4. RUN:执行命令

在镜像构建过程中运行命令,比如恢复 NuGet 包、发布应用等。

典型用法:
RUN dotnet restore
—— 恢复项目依赖
RUN dotnet publish -c Release -o out
—— 发布应用到 out 目录

5. EXPOSE:声明服务端口

说明容器运行时监听的端口,虽非强制但有助于文档化和运行时配置。

示例:
EXPOSE 80
EXPOSE 443

6. ENTRYPOINT 与 CMD:启动应用

定义容器启动时运行的命令。推荐使用 ENTRYPOINT 执行最终的应用入口

示例:
ENTRYPOINT ["dotnet", "MyApp.dll"]
—— 启动 .NET 程序集

若使用 CMD,可作为参数补充,但多数情况下直接用 ENTRYPOINT 更明确。

7. 多阶段构建:减少最终镜像体积

通过多个 FROM 阶段分离构建环境与运行环境,只将发布后的文件复制到最小镜像中。

结构示意: 第一阶段(build):还原、编译、发布 第二阶段(final):仅复制发布文件,设置启动命令

这样能显著减小镜像大小,提升安全性与部署效率。

基本上就这些。掌握这几个指令,就能写出高效、标准的 .NET 应用 Dockerfile。关键是分阶段、合理复制文件、选择合适的基础镜像,并正确启动应用。不复杂但容易忽略细节。

相关推荐