泊坞窗操作的新位置

Posted

技术标签:

【中文标题】泊坞窗操作的新位置【英文标题】:New location of docker actions 【发布时间】:2020-02-09 12:45:56 【问题描述】:

我在 docker 上使用这个:

- name: Build container image
  uses: actions/docker/cli@master
  with:
    ///// removed

- name: Docker Login
  uses: actions/docker/login@master
  env:
    ///// removed

但是 github.com/actions/docker 似乎不再存在了。

我的构建是 404:

未能下载操作“https://api.github.com/repos/actions/docker/tarball/master”。错误响应状态码不表示成功:404(未找到)。

有人知道新地点吗?

【问题讨论】:

他们一定是最近才完全删除了actions/docker 存储库。它与我在答案中发布的消息一起存档了一段时间。 【参考方案1】:

actions/docker 操作现已弃用。在完全删除之前,该存储库已归档并显示以下消息。

不推荐使用此操作,而是使用新 YAML 语言中的运行脚本步骤来运行 docker cli。

所以推荐使用 Docker 的方式是使用run 脚本命令。官方的入门工作流程展示了一个构建镜像的简单示例。 https://github.com/actions/starter-workflows/blob/master/ci/docker-image.yml

有关 Docker 映像发布的更完整示例,请参阅以下工作流程。

对于公共 DockerHub 注册表:

name: my workflow
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Login to DockerHub Registry
        run: echo $ secrets.DOCKERHUB_PASSWORD  | docker login -u $ secrets.DOCKERHUB_USERNAME  --password-stdin
      - name: Build the Docker image
        run: docker build -t myimage:latest .
      - name: Tag the Docker image
        run: docker tag myimage:latest myimage:1.0
      - name: Push the Docker image to the registry
        run: docker push myimage:1.0

对于私有注册表,例如新的 GitHub Package Registry,您还需要在登录时指定主机名并适当标记图像:

name: my workflow
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Login to GitHub Package Registry
        run: echo $ secrets.GITHUB_TOKEN  | docker login docker.pkg.github.com -u $ github.repository  --password-stdin
      - name: Build the Docker image
        run: docker build -t myimage:latest .
      - name: Tag the Docker image
        run: docker tag myimage:latest docker.pkg.github.com/username/repository/myimage:1.0
      - name: Push the Docker image to the registry
        run: docker push docker.pkg.github.com/username/repository/myimage:1.0

【讨论】:

这是在测试期间的后续开发、阅读文档和我自己的实验的混合体。 哇,感谢 github 容器注册表的额外金块!我不知道!现在要去了解一下,因为我真的不想为 docker hub 私有注册表付费。 请您解释一下echo "$ secrets.DOCKER_PASSWORD " | docker login docker.pkg.github.com -u "$ secrets.DOCKER_USERNAME " --password-stdin。我一直在做docker login -u "foo_user" -p "foo_pw"。有什么区别? 查看这个关于 docker login 的答案:***.com/questions/51489359/… 关于包注册表。是的,我相信这就是它的工作原理。如果 repo 是私有的,那么包也是私有的。 登录 GitHub 包注册表:echo $ secrets.GITHUB_TOKEN | docker login docker.pkg.github.com -u $ github.repository --password-stdin

以上是关于泊坞窗操作的新位置的主要内容,如果未能解决你的问题,请参考以下文章

sh MacOSX泊坞窗 - 输入泊坞窗实例

sh 标记并推送泊坞窗图像到泊坞窗集线器

使用多阶段泊坞窗文件输出多个图像

sh [下载并设置HDF 3.0泊坞窗容器]使用此脚本下载并设置HDF泊坞窗容器#hdf #docker #setup#hdf30

如何优雅地分离无限睡眠泊坞窗以及为啥

作曲家内存限制泊坞窗