在生产环境中部署微服务架构时,Docker已成为不可或缺的容器化平台。本文将分享我们在.NET Core微服务环境下的实际部署经验。
核心部署策略 我们采用多阶段构建策略,首先在CI/CD流水线中使用以下Dockerfile配置:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["*.csproj", "./"]
RUN dotnet restore "./"
COPY . .
WORKDIR "/src/./"
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"]
生产环境优化 为确保服务稳定性,我们实施了以下运维策略:
- 使用Docker Compose管理多容器部署,配置文件中定义网络和卷
- 启用健康检查:
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 CMD curl -f http://localhost:80/health || exit 1 - 设置资源限制:
mem_limit: 512m和cpus: '0.5' - 使用Docker Swarm进行服务编排,实现自动扩缩容
监控与日志 通过集成Application Insights和ELK栈,我们实现了完整的可观测性。在生产环境中,建议配置以下环境变量:
- ASPNETCORE_ENVIRONMENT=Production
- DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
- ASPNETCORE_URLS=http://+:80
这种部署方式有效降低了服务间依赖冲突,提升了部署效率和系统稳定性。

讨论