.NET中的Docker容器化 是指将 .NET 应用(如 ASP.NET Core 项目)打包到 Docker 容器中,以便在任何支持 Docker 的环境中一致运行。这种方式解决了“在我机器上能运行”的问题,提升了部署效率、环境一致性与可扩展性。
为什么使用Docker容器化ASP.NET Core应用?
ASP.NET Core 天生支持跨平台和高性能,结合 Docker 可以轻松实现: 环境隔离:开发、测试、生产环境完全一致 快速部署:镜像一键构建,随处运行 微服务架构支持:每个服务独立容器化,便于管理 与 Kubernetes 等编排工具无缝集成如何为ASP.NET Core应用创建Dockerfile?
在项目根目录下创建名为 Dockerfile 的文件(无扩展名),内容如下:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet restore "YourApp.csproj" RUN dotnet build "YourApp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "YourApp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "YourApp.dll"]说明: FROM ... AS base:使用官方 ASP.NET 运行时镜像作为基础运行环境 EXPOSE 80/443:声明容器监听的端口(HTTP/HTTPS) build 阶段:使用 SDK 镜像还原、编译代码 publish 阶段:发布应用到指定目录 final 阶段:最小化最终镜像,只包含运行所需文件 ENTRYPOINT:启动命令,运行 DLL
构建与运行Docker镜像
打开终端,在 Dockerfile 所在目录执行:
docker build -t yourapp:latest .
运行容器:
docker run -d -p 5000:80 --name myapp yourapp:latest
访问 https://www.php.cn/link/6060d322713797e84f598ea25c812cab 即可看到应用。
小贴士
提高构建效率的小建议: 将nuget.config或
.csproj文件提前复制,利用 Docker 缓存避免每次恢复包 使用
.dockerignore排除不必要的文件(如 bin、obj、.git) 根据实际使用的 .NET 版本调整镜像标签(如 6.0、7.0、8.0) 基本上就这些。只要写好 Dockerfile,你的 ASP.NET Core 应用就能轻松容器化,部署更简单可靠。
