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
相关产品推荐
相关产品推荐

