☰分类导航

软件工程/部署与运维
课程进度 72% · 第8/10章第8/10章 · 标签 1/6
— 1 —

发布流程

原.NET 7镜像及Azure运行时值仅为历史部署示例,不是当前生产选型。发布前应使用项目验证过且仍受支持的版本,SDK与运行时镜像要匹配;命令涉及真实云资源时需核对目标与费用范围。

使用 dotnet publish 命令可以将应用编译并输出到指定目录,准备部署。

发布目标包含运行方式、操作系统与架构,必须与服务器匹配。开发机能run不代表生产已具备运行时、配置与数据库权限;先列运行前提再选择框架依赖或自包含。单文件也是打包选择,不承诺任何系统均可运行或完全没有外部依赖。


```bash
# 发布应用(Release配置)
dotnet publish -c Release -o ./publish

# 指定目标运行时
dotnet publish -c Release -r linux-x64 --self-contained true -o ./publish

# 创建运行时包(单文件)
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o ./publish
```
bash
1
# 发布应用(Release配置)
2
dotnet publish -c Release -o ./publish
3
 
4
# 指定目标运行时
5
dotnet publish -c Release -r linux-x64 --self-contained true -o ./publish
6
 
7
# 创建运行时包(单文件)
8
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o ./publish

📖--self-contained 打包运行时,目标机器无需安装 .NET SDK。PublishSingleFile 发布为单个文件

— 2 —

Docker容器化

Docker可以将应用及其依赖打包成容器镜像,实现环境一致性和便捷部署。

多阶段镜像把构建与运行环境分开,运行层通常不需要完整SDK。EXPOSE仅描述端口意图,真正监听由应用配置决定,映射目标必须一致。原7.0标签属于历史示例,生产采用受支持并经项目验证的版本,且持续维护基础镜像与运行时。


```dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
```
dockerfile
1
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
2
WORKDIR /app
3
EXPOSE 80
4
 
5
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
6
WORKDIR /src
7
COPY ["MyApp.csproj", "."]
8
RUN dotnet restore
9
COPY . .
10
RUN dotnet publish -c Release -o /app/publish
11
 
12
FROM base AS final
13
WORKDIR /app
14
COPY --from=build /app/publish .
15
ENTRYPOINT ["dotnet", "MyApp.dll"]
Docker容器化发布部署CI/CD运维