【问题标题】:Github Action Service Container from Dockerfile in same repo来自 Dockerfile 的 Github Action 服务容器在同一个仓库中
【发布时间】:2020-08-21 21:50:40
【问题描述】:

我正在学习 Github Actions 并设计一个工作流,该工作需要Service Container

documentation 声明配置必须指定“用作服务容器以运行操作的 Docker 映像。该值可以是 Docker 基础映像名称或公共 docker Hub 或注册表”。文档中的所有示例都使用公开可用的 Docker 映像,但是我想从包含在我的 repo 中的 Dockerfile 创建一个服务容器。

是否可以使用本地 Dockerfile 来创建服务容器?

由于作业依赖于服务容器,因此该映像在作业开始时必须存在,因此无法通过同一作业中的较早步骤创建该映像。该图像可以在单独的作业中构建,但由于作业在单独的运行器中执行,我相信作业 2 将无法访问在作业 1 中创建的图像。如果这是真的,那么我可以使用上传/下载来关注 this approach -artifact 所以将 Job 1 的图像提供给 Job 2?

如果一切都失败了,我可以让 Job 1 创建映像并将其上传到 Docker Hub,然后让 Job 2 从 Docker Hub 下载它,但肯定有更好的方法。

【问题讨论】:

  • 我们不提供使用普通 Dockerfile 作为服务容器的方法,因为在我们开始作业步骤之前配置服务的限制,并且当时我们没有克隆存储库并且依赖于关于如何设置作业,我们可能永远不会克隆存储库。

标签: github-actions building-github-actions


【解决方案1】:

GitHub Actions 主机(运行器)是一个满载的 Linux 机器,已经安装了每个人需要的一切。

您只需运行 docker 和 docker-compose 命令即可轻松启动多个容器 - 无论是您自己的镜像还是公共镜像。

我对您的建议是:在 docker-compose.yml 文件中描述您的服务,并在您的 GitHub 操作步骤之一中,只需执行 docker-compose up -d

【讨论】:

    【解决方案2】:

    您可以使用位于 repo 中的 Dockerfiledocker-compose.yml 创建 docker 映像。参考这个公众号gist,可能会有帮助。

    您可以使用docker-compose,而不是构建多个 docker-images。 Docker-compose 是处理这种情况的首选方式。

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 2016-05-31
      • 2017-06-06
      • 2021-01-03
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      相关资源
      最近更新 更多