Docker与GitHub Actions携手,畅享前后端分离项目zhontai的云端部署之旅
2023-10-23 00:34:44
前言:云端部署,提升项目实力
在当今快速发展的数字化时代,云端部署已成为软件项目必不可少的环节。它不仅可以提高项目的可用性和可扩展性,还能优化资源利用率并降低成本。
本文将聚焦如何使用GitHub Actions和Docker技术,实现.Net Core+Vue前后端分离项目zhontai的构建和云端部署。通过循序渐进的步骤和清晰的讲解,您将掌握一套完善的云端部署流程,为项目的成功部署打下坚实的基础。
一、GitHub Actions:持续集成与持续部署的得力助手
GitHub Actions作为一款强大的持续集成和持续部署(CI/CD)工具,能够帮助开发者自动化项目构建、测试和部署等任务。它与GitHub无缝集成,支持多种编程语言和云平台,为项目的云端部署提供了便利。
1. 创建GitHub Actions工作流
首先,您需要在GitHub仓库中创建一个新的工作流文件.github/workflows/build-and-deploy.yml,并添加以下代码:
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: dotnet build --configuration Release
- run: npm install
- run: npm run build --prod
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: appleboy/scp-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: 22
source: "build/**/*"
target: "/var/www/html/zhontai"
这个工作流定义了两个作业:
- build:负责构建.Net Core和Vue项目。
- deploy:负责将构建后的项目部署到云服务器。
2. 配置GitHub Actions密钥
为了使工作流能够访问GitHub仓库和云服务器,您需要配置GitHub Actions密钥:
- 在GitHub仓库的“Settings”页面,选择“Secrets”。
- 单击“New secret”按钮,并输入以下密钥:
Name: HOST
Value: 您的云服务器IP地址或域名
Name: USERNAME
Value: 您的云服务器用户名
Name: PASSWORD
Value: 您的云服务器密码
二、Docker:轻量级容器技术,助力应用高效运行
Docker作为一种轻量级的容器技术,可以将应用程序及其依赖项打包成一个可移植的镜像,从而实现应用的快速部署和运行。
1. 构建Docker镜像
首先,您需要构建一个Docker镜像,并将其推送到Docker Hub。您可以使用以下Dockerfile来构建镜像:
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY . /app
RUN dotnet restore
RUN dotnet build --configuration Release
COPY build/Web /app/wwwroot
然后,使用以下命令构建并推送镜像:
docker build -t your-image-name .
docker push your-image-name
2. 在云服务器上部署Docker容器
在云服务器上,您可以使用以下命令部署Docker容器:
docker pull your-image-name
docker run -d -p 80:80 your-image-name
这将拉取镜像并启动一个容器,并将容器的80端口映射到云服务器的80端口。这样,您就可以通过云服务器的80端口访问项目了。
三、结语:云端部署,开启项目新篇章
通过本文的讲解,您已经掌握了使用GitHub Actions和Docker技术,实现.Net Core+Vue前后端分离项目zhontai的构建和云端部署的详细步骤。
云端部署不仅可以提高项目的可用性和可扩展性,还能优化资源利用率并降低成本。希望您能运用本文所学,将项目成功部署到云端,开启项目的新篇章。
如果您在云端部署的过程中遇到任何问题,欢迎随时留言,我将竭诚为您解答。