You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Action构建Docker镜像后部署Caprover失败求助

问题原因

你构建的my-image-name:latest是GitHub Actions运行环境中的本地镜像,Caprover服务器无法直接访问这个临时环境里的镜像,它会默认去公共镜像仓库(比如Docker Hub)拉取这个名称的镜像,自然找不到,所以触发了404权限/不存在错误。

解决方案

需要把构建好的镜像推送到一个Caprover能访问的远程镜像仓库(比如GitHub Container Registry,GHCR),再让Caprover从该仓库拉取镜像部署。

步骤1:准备GHCR访问凭证

在GitHub仓库的Settings > Secrets and variables > Actions中添加一个名为GHCR_TOKEN的密钥,值为你的个人访问令牌(PAT),令牌需要勾选write:packages权限。

步骤2:修改GitHub Actions配置文件

更新你的.github/workflows/xxx.yml,添加登录镜像仓库、推送镜像的步骤,并修改镜像标签为远程仓库地址:

name: Docker Image CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    
    # 登录GitHub容器仓库
    - name: Log in to GHCR
      uses: docker/login-action@v2
      with:
        registry: ghcr.io
        username: ${{ github.actor }}
        password: ${{ secrets.GHCR_TOKEN }}
    
    # 构建带远程仓库标签的镜像
    - name: Build Docker image
      run: docker build . --file Dockerfile --tag ghcr.io/${{ github.repository_owner }}/my-image-name:latest
    
    # 推送镜像到GHCR
    - name: Push image to GHCR
      run: docker push ghcr.io/${{ github.repository_owner }}/my-image-name:latest
      
    # 部署到Caprover,使用远程镜像地址
    - name: Deploy to Caprover
      uses: floms/action-caprover@v1
      with:
        host: '${{ secrets.CAPROVER_SERVER }}'
        password: '${{ secrets.CAPROVER_PASSWORD }}'
        app: '${{ secrets.APP_NAME }}'
        image: ghcr.io/${{ github.repository_owner }}/my-image-name:latest

步骤3:(可选)配置Caprover访问私有镜像

如果你的GHCR镜像设为私有,需要在Caprover的对应应用设置中,添加GHCR的认证信息:

  • 镜像仓库地址:ghcr.io
  • 用户名:你的GitHub用户名
  • 密码:之前创建的GHCR_TOKEN

这样Caprover就能拉取私有镜像了。

内容的提问来源于stack exchange,提问作者kenshuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:33:28