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 # 拉取最新镜像并重启 IMAGE_TAG="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" docker pull $IMAGE_TAG docker compose down api docker compose up -d api echo "✅ 后端部署完成!"