跟着AI学习C#之项目实践Day8

发布于:2025-06-27 ⋅ 阅读:(16) ⋅ 点赞:(0)

📅 Day 8:部署与上线你的博客系统

✅ 今日目标:

  • 使用 Docker 构建项目容器镜像
  • 配置 GitHub Actions 实现自动化 CI/CD
  • 部署到 本地 Docker 环境 / Azure App Service / AWS / 其他云平台
  • 准备作品集展示页面或部署文档
  • 提交 Git 版本记录进度

🐳 一、使用 Docker 构建项目镜像

✅ 步骤:

  1. 在项目根目录添加 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"]
  1. 构建 Docker 镜像
docker build -t myblog .
  1. 运行容器
docker run -d -p 8080:80 myblog

你可以访问 http://localhost:8080 查看博客首页。


🔄 二、配置 GitHub Actions 自动化 CI/CD

我们使用 GitHub Actions 来实现每次提交自动构建和部署。

✅ 步骤:

  1. 在 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_USERNAMEDOCKER_PASSWORD


☁️ 三、部署到云平台(以 Azure App Service 为例)

✅ 步骤:

  1. 登录 Azure Portal
  2. 创建新资源:
    • 类型:App Service
    • 操作系统选择:Linux
    • 发布方式选择:Docker Hub
    • 镜像名称填写:your-dockerhub-username/myblog:latest
  3. 设置数据库连接字符串(在 App Settings 中)
    DefaultConnection=Server=tcp:yourserver.database.windows.net;Database=yourdb;User ID=youruser;Password=yourpassword;Encrypt=True;
    
  4. 保存并重启应用

💻 可选:部署到本地服务器

你也可以将镜像推送到私有仓库,然后在本地服务器上拉取并运行:

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

## 📸 截图

![截图1](screenshots/home.png)

## 🌐 部署地址

👉 [在线演示地址](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 应用项目,可以用于求职作品集、课程作业、技术分享等用途!


网站公告

今日签到

点亮在社区的每一天
去签到