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

使用GitHub Actions构建Docker容器无法更新GitHub Packages包的配置修改问题

问题根因及修复方案

核心问题点

  • 工作流缺失代码拉取步骤:当前脚本没有拉取仓库最新代码的逻辑,每次构建使用的都是Runner环境的默认文件,自然不会同步最新的代码变更
  • 环境变量定义不生效:GitHub Actions的env字段不支持直接执行Shell命令,你定义的镜像地址中的$(echo xxx)会被当做普通字符串处理,导致实际推送的镜像地址和你预期的不一致
  • Docker默认使用缓存构建:docker-compose build默认会复用本地镜像缓存,即使代码更新如果缓存层命中,也会生成和旧版本哈希完全一致的镜像,ghcr.io会判定镜像无变化拒绝更新

修改后的工作流脚本

name: Continuous Integration and Delivery

on: [ push ]

env:
  # 用GitHub内置函数转小写,避免Shell解析问题
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}
  WEB_IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/web:latest
  NGINX_IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/nginx:latest
  # 可选:添加commit hash作为标签,方便版本追溯
  WEB_IMAGE_HASH: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/web:${{ github.sha }}
  NGINX_IMAGE_HASH: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/nginx:${{ github.sha }}

jobs:
  build:
    name: Build Docker Images
    runs-on: ubuntu-latest
    steps:
      # 新增:拉取仓库最新代码
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Log in to GitHub Packages
        run: echo ${PERSONAL_ACCESS_TOKEN} | docker login ghcr.io -u ${{ secrets.NAMESPACE }} --password-stdin
        env:
          PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

      - name: Build images
        run: |
          # 加--no-cache强制不使用缓存,保证每次都用最新代码构建
          docker-compose -f docker-compose.ci.yml build --no-cache
          # 给镜像打带commit hash的标签,确保版本唯一
          docker tag ${{ env.WEB_IMAGE }} ${{ env.WEB_IMAGE_HASH }}
          docker tag ${{ env.NGINX_IMAGE }} ${{ env.NGINX_IMAGE_HASH }}

      - name: Push images
        run: |
          # 同时推送latest标签和哈希标签
          docker push ${{ env.WEB_IMAGE }}
          docker push ${{ env.WEB_IMAGE_HASH }}
          docker push ${{ env.NGINX_IMAGE }}
          docker push ${{ env.NGINX_IMAGE_HASH }}

额外说明

你的docker-compose.ci.yml配置没有问题,不需要修改。修改后每次推送代码都会强制拉取最新代码、无缓存构建镜像,同时打唯一的版本标签推送到ghcr.io,不会再出现包不更新的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:15:02