name: 部署后端服务 on: push: branches: [ main ] paths: [ 'backend/**', '.env.example' ] workflow_dispatch: env: REGISTRY: crpi-b4fqtfbvv583enk2.cn-shanghai.personal.cr.aliyuncs.com IMAGE_NAME: photography-backend/photography jobs: deploy: name: 🚀 构建并部署后端 runs-on: ubuntu-latest steps: - name: 📥 检出代码 uses: actions/checkout@v4 - name: 🐳 构建并推送镜像 run: | cd backend IMAGE_TAG="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" # 登录镜像仓库 echo "${{ secrets.DOCKER_PASSWORD }}" | docker login ${{ env.REGISTRY }} --username "${{ secrets.DOCKER_USERNAME }}" --password-stdin # 构建并推送 docker build -t $IMAGE_TAG . docker push $IMAGE_TAG - name: 🚀 部署到服务器 uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.HOST }} username: ${{ secrets.TYY_USER }} password: ${{ secrets.TYY_PWD }} port: ${{ secrets.PORT }} script: | cd /data/docker/photography/backend git pull origin main # 拉取最新镜像 IMAGE_TAG="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" docker pull $IMAGE_TAG # 更新镜像标签 docker tag $IMAGE_TAG ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest # 使用生产环境配置部署 docker compose -f docker-compose.prod.yml down api docker compose -f docker-compose.prod.yml up -d api echo "✅ 后端部署完成!"