如何在 github 操作中从 docker-compose.yml 向 docker 推送命令添加标签

How to add tag to docker push command from docker-compose.yml in github actions

当 docker-compose.yml 文件发生变化(新的主要版本,更改图像标签)。构建运行良好,但是当我尝试推送时,我无法访问图像名称,它默认为标签 latest,这不是我刚刚构建的。

- name: Build the Docker image
      run: docker compose build
    
- name: Docker push
      run: docker push ${{secrets.DOCKER_USER}}/myreponame

我收到错误

Using default tag: latest
The push refers to repository [docker.io/***/myreponame]
tag does not exist: ***/myreponame:latest
Error: Process completed with exit code 1.

我需要以某种方式从 docker-compose.yml 文件中获取标签或完整图像名称:

docker push ${{secrets.DOCKER_USER}}/myreponame:{tag_from_file}

有没有办法在 docker compose 构建命令中或从文件中获取此数据?我不想手动输入数据到 CI/CD.

您可以在 docker-compose 文件中为图像名称添加使用变量替换,例如:

myapp:
  image: "${REPO}/myreponame:${tag_from_file}"

并使用 REPOtag_from_file 定义为环境变量进行构建:

- name: Build the Docker image
  run: REPO=${{secrets.DOCKER_USER}} tag_from_file=something docker compose build

它应该可以工作。

您还可以使用 Docker 执行的 Github 操作来构建和推送您的镜像:https://github.com/marketplace/actions/build-and-push-docker-images