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

GitHub Actions如何为Docker镜像同时打版本号与latest标签

方案说明

不需要引入额外第三方Action、不需要重复构建镜像,直接通过原生docker命令给单次构建的镜像绑定多个标签即可,全程无额外CI开销,完全匹配轻量化CI/CD的需求:

  • 构建阶段执行一次docker build,同时给镜像打上自增版本号、latest两个标签
  • 登录Docker Hub的原有逻辑完全不需要改动
  • 推送阶段依次推送两个标签到仓库即可
  • 保留的自增版本号标签还可以用于异常时快速回滚,不会因为只有latest标签找不到历史版本
修正后的完整工作流配置

已经同步修正了原配置里steps层级的缩进错误,直接替换原有.github/workflows/路径下的CI文件即可使用:

name: Docker Image CI
on:
  push:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Build the Docker image
        run: |
          # 单次构建同时绑定两个标签,无额外构建开销
          docker build . \
            -t me/myrepo:${{github.run_number}} \
            -t me/myrepo:latest
      
      - name: Login to Docker Hub
        env:
          DOCKER_USER: ${{ secrets.DOCKER_USER }}   
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}  
        run: docker login -u $DOCKER_USER -p $DOCKER_PASSWORD

      - name: Push tags to Docker Hub
        run: |
          # 依次推送两个标签到仓库
          docker push me/myrepo:${{github.run_number}}
          docker push me/myrepo:latest
补充说明
  • 整个调整没有新增依赖、没有增加镜像构建时长,两个标签指向同一个镜像层,Docker Hub存储也不会产生额外的冗余副本
  • 配置生效后,每次main分支提交都会自动推送带自增run号的可追溯版本,同时更新latest标签,Watchtower检测到latest标签的镜像哈希变化就会自动拉取更新服务,不需要修改Watchtower的默认配置
  • 如果需要进一步加快Watchtower的更新频率,可以在Watchtower启动参数里加--poll-interval "30s"把轮询间隔改成30秒,非核心业务场景下足够稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:57:26