📅 Day 8:部署与上线你的博客系统
✅ 今日目标:
- 使用 Docker 构建项目容器镜像
- 配置 GitHub Actions 实现自动化 CI/CD
- 部署到 本地 Docker 环境 / Azure App Service / AWS / 其他云平台
- 准备作品集展示页面或部署文档
- 提交 Git 版本记录进度
🐳 一、使用 Docker 构建项目镜像
✅ 步骤:
- 在项目根目录添加
Dockerfile
文件(如果还未有)
# 使用 .NET 官方镜像作为构建环境
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
# 构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyBlog.csproj", "./"]
RUN dotnet restore
COPY . .
RUN dotnet build -c Release -o /app/build
# 发布阶段
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish
# 最终运行阶段
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyBlog.dll"]
- 构建 Docker 镜像
docker build -t myblog .
- 运行容器
docker run -d -p 8080:80 myblog
你可以访问 http://localhost:8080
查看博客首页。
🔄 二、配置 GitHub Actions 自动化 CI/CD
我们使用 GitHub Actions 来实现每次提交自动构建和部署。
✅ 步骤:
- 在 GitHub 项目中创建
.github/workflows/deploy.yml
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
version: '8.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build project
run: dotnet build --configuration Release --no-restore
- name: Publish app
run: dotnet publish -c Release -o ./publish
- name: Build Docker image
run: |
docker build -t your-dockerhub-username/myblog:latest .
- name: Push to Docker Hub
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker push your-dockerhub-username/myblog:latest
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
⚠️ 替换
your-dockerhub-username
,并在 GitHub Secrets 中设置DOCKER_USERNAME
和DOCKER_PASSWORD
。
☁️ 三、部署到云平台(以 Azure App Service 为例)
✅ 步骤:
- 登录 Azure Portal
- 创建新资源:
- 类型:App Service
- 操作系统选择:Linux
- 发布方式选择:Docker Hub
- 镜像名称填写:
your-dockerhub-username/myblog:latest
- 设置数据库连接字符串(在 App Settings 中)
DefaultConnection=Server=tcp:yourserver.database.windows.net;Database=yourdb;User ID=youruser;Password=yourpassword;Encrypt=True;
- 保存并重启应用
💻 可选:部署到本地服务器
你也可以将镜像推送到私有仓库,然后在本地服务器上拉取并运行:
docker pull your-dockerhub-username/myblog:latest
docker run -d -p 80:80 your-dockerhub-username/myblog:latest
📦 四、准备作品集展示页面
建议你在 GitHub 上准备一个漂亮的 README 页面,包括:
- 🧾 项目简介
- 🔧 技术栈(ASP.NET Core, EF Core, Identity, Docker, GitHub Actions)
- 🖼️ 截图演示功能
- 📌 部署链接(如 Azure 或 Docker Hub 地址)
- 📝 使用说明(如何运行、测试账号等)
示例结构:
# MyBlog — 个人博客系统
这是一个基于 ASP.NET Core 8 的博客系统,支持用户注册、文章管理、Markdown 编写、评论、搜索等功能。
## 🛠️ 技术栈
- ASP.NET Core Razor Pages
- Entity Framework Core + Identity
- Markdown 渲染(Markdig)
- Docker 容器化部署
- GitHub Actions 自动化 CI/CD
## 📸 截图

## 🌐 部署地址
👉 [在线演示地址](https://your-blog.azurewebsites.net)
## 📂 开发指南
克隆项目:
```bash
git clone https://github.com/yourname/MyBlog.git
cd MyBlog
dotnet run
启动数据库(可使用 LocalDB 或 SQL Server)并执行迁移:
dotnet ef database update
启动开发服务器:
dotnet watch run
🙋♂️ 贡献者
欢迎贡献 PR!
📜 许可证
MIT License
---
## 📦 五、提交 Git 版本
```bash
git add .
git commit -m "Day8: Added Docker support, GitHub Actions CI/CD and deployment documentation"
📝 今日总结
今天你完成了:
✅ 使用 Docker 构建并运行博客系统
✅ 配置 GitHub Actions 实现自动化构建和部署
✅ 成功部署到云平台(如 Azure App Service)
✅ 准备了作品集展示页面
✅ 提交版本控制记录
🎉 项目完成啦!
恭喜你完成了整个博客系统的开发、测试、部署全过程!
你现在拥有一个完整的 全栈 Web 应用项目,可以用于求职作品集、课程作业、技术分享等用途!