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



我试图按照他们的文档使用 github 操作将 docker 映像推送到公共 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操作现已弃用。如果您访问存储库,您将看到存储库已存档并显示以下消息。

此操作已弃用,以便使用新 YAML 语言中的运行脚本步骤来运行 docker cli。

https://github.com/actions/docker

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

对于公共 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

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

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

另请参阅此答案,了解 docker 映像发布的完整工作流示例。

https://github.com/marketplace/actions/docker-login

请尝试此操作,因为actions/docker/login@master似乎已被弃用。

我发现了 Git 中心操作:构建和推送 Docker 映像

https://github.com/marketplace/actions/build-and-push-docker-images

它运行良好,我能够构建 docker 镜像并将其推送到 Docker Hub。

使用docker/login-action@v1登录到 docker 注册表 https://github.com/docker/login-action。

name: deploy

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: docker/login-action@v1
with:
registry: private-registry-url
username: ${{ secrets.USERNAME  }}
password: ${{ secrets.PASSWORD }}

有关服务容器,请参阅以下示例:

jobs:
build:
container:
image: octocat/ci-image:latest
credentials:
username: mona
password: ${{ secrets.docker_hub_password}}
services:
db:
image:  ghcr.io/octocat/testdb:latest
credentials:
username: ${{ github.repository_owner }}
password: ${{ secrets.ghcr_password }}

要登录到 dockerhub,您可以使用 actions/docker 存储库中提供的操作。

看起来像这样:

action "Docker Login" {
uses = "actions/docker/login@master"
secrets = ["DOCKER_USERNAME", "DOCKER_PASSWORD"]
}

最新更新