Docker 使用 github 构建和推送:无效的参考格式
Posted
技术标签:
【中文标题】Docker 使用 github 构建和推送:无效的参考格式【英文标题】:Docker build and push using github: invalid reference format 【发布时间】:2021-12-06 08:07:05 【问题描述】:我想构建我的图像并使用 github 操作将其推送到 dockerhub。这是my repo
这就是我想做的工作:
name: ci
on:
push:
branches:
- 'master'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: $ secrets.DOCKERHUB_USERNAME
password: $ secrets.DOCKERHUB_PASSWORD
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
load: true
tags: shirzadi/ehsan:latest
-
name: Push it!
run: docker push $ env.IMAGE :$ env.GIT_SHA
结果如下:
【问题讨论】:
env.IMAGE
和 env.GIT_SHA
来自哪里?
@AymDev 我以为那些是github预定义的变量我应该放什么?
【参考方案1】:
您正在使用不存在的环境变量。根据docker/build-push-action@v2 文档,它可以一步构建、标记和推送您的图像:
jobs:
docker:
steps:
# ...
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: shirzadi/ehsan:latest,shirzadi/ehsan:$ env.GITHUB_SHA
tags
键列出 2 个标签并使用GITHUB_SHA
环境变量。这些标签将在push
键设置为 true 时被推送。
见:
Github Actions - Default environment variables docker/build-push-action@v2 - customizing inputs【讨论】:
Error: buildx failed with: error: push and load 目前可能没有设置在一起 @ehsanshirzadi 你需要使用这个load
选项吗?我不确定它的目的。如果它生成您不使用的图像的 tarball,只需将其删除。【参考方案2】:
您没有 env.IMAGE 数据。下面的代码应该可以完成这项工作。
- name: Build and push
run: docker build -t $ env.IMAGE :$ github.sha .
env:
IMAGE: shirzadi/ehsan
- name: Push it!
run: docker push $ env.IMAGE :$ github.sha
env:
IMAGE: shirzadi/ehsan
【讨论】:
一个错误说:Unrecognized named-value: 'IMAGE' => run: docker push $ IMAGE :$ GIT_SHA 我已经编辑了我的答案,我错过了一件小事。请检查更新的答案?以上是关于Docker 使用 github 构建和推送:无效的参考格式的主要内容,如果未能解决你的问题,请参考以下文章
Docker-in-Docker 与 Gitlab 共享运行器,用于构建和推送 docker 镜像到注册表
跨账户 ECR 登录和推送构建的 Docker 映像的 CodePipeline 错误