docker - 如何使用 Github Actions 登录 Docker 注册表

标签 docker github github-actions

我尝试使用 github 操作按照其文档将 Docker 镜像推送到公共(public) Docker 存储库,但我无法使其工作:

name: CI

on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/docker/login@master
        with: # Set the secret as an input
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
        env: # Set the secret in the env
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
      - name: Test
        run: mvn clean verify -U
      - name: build
        run: ./mvnw compile jib:dockerBuild
      - name: push
        run:  docker push odfsoft/guess-game:latest

我收到以下错误:

/usr/bin/docker run --name bb8146f4246c56a44203bb2667ccfbdcab81_f18969 --label 04bb81 --workdir /github/workspace --rm -e DOCKER_USERNAME -e DOCKER_PASSWORD -e INPUT_DOCKER_USERNAME -e INPUT_DOCKER_PASSWORD -e HOME -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/spring-boot-guess-game/spring-boot-guess-game":"/github/workspace" 04bb81:46f4246c56a44203bb2667ccfbdcab81
Error: Cannot perform an interactive login from a non TTY device

这与我的操作有关还是 github 操作的限制?

最佳答案

actions/docker 操作现已被弃用。如果您访问存储库,您将看到存储库已存档并具有以下消息。

This action is deprecated in favor of using the run script step in the new YAML language to run the docker cli.

https://github.com/actions/docker

因此,推荐的登录 Docker 注册表的方法是使用 run 脚本命令,如下所示。

对于公共(public) DockerHub 注册表:

name: my workflow
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Login to DockerHub Registry
        run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin

对于私有(private)注册表,例如新的 GitHub Package Registry,您还需要指定主机名:

name: my workflow
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Login to GitHub Package Registry
        run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login docker.pkg.github.com -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

另请参阅this answer查看 docker 镜像发布的完整工作流程示例。

关于docker - 如何使用 Github Actions 登录 Docker 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226756/

相关文章:

reactjs - 部署到 DigitalOcean 时 GitHub 操作失败

docker - 将 IBM Containers (Dockers) 连接到 Watson IoT 服务实例

linux - Docker 构建错误,存档/tar : sockets not supported

node.js - 试图模拟 github webhook 请求,得到 : "X-Hub-Signature does not match blob signature"

linux - 如何在github工作流中创建文件夹?

github - 如何定义 GitHub 操作?

docker - Docker群:保证重启后的高可用性

docker - Docker撰写:可以对依赖服务的延迟启动进行建模吗?

git - Jenkins 卡在 git fetch

java - EGit - 从 github 导入项目(仅 src)作为 java 项目