【问题标题】:How to update docker image used in Gitlab.com CI如何更新 Gitlab.com CI 中使用的 docker 镜像
【发布时间】:2022-01-06 19:04:41
【问题描述】:

我在 gitlab.com CI 中有一个使用 the php:8.0 image on dockerhub 的项目构建,我可以看到它是最新的 PHP 8.0.13。但是,当我的 CI 在 gitlab.com 上运行时,它使用的过时版本会破坏我的构建:

Your requirements could not be resolved to an installable set of packages.
Problem 1
  - Installation request for symfony/event-dispatcher v6.0.0 -> satisfiable by symfony/event-dispatcher[v6.0.0].
  - symfony/event-dispatcher v6.0.0 requires php >=8.0.2 -> your PHP version (8.0.1) does not satisfy that requirement.

您可以在这里看到它使用的是 PHP 8.0.1,而不是任何更新的版本。

我没有直接使用php:8.0 图像,而是通过使用php:8.0 图像作为其基本图像in its dockerfileedbizarro/gitlab-ci-pipeline-php 图像。我猜问题出在这里,因为这个包已经有一段时间没有更新了。

如何让 gitlab 使用更新版本的图像?

【问题讨论】:

  • 能否请您发布有关工作的 gitlab-ci.yml 以便我们查看它是如何配置的?另外,您是否使用自托管运行器?
  • 正如您所提到的,问题在于 edbizarro/gitlab-ci-pipeline-php 尚未随着 php:8.0 中的上游更改而更新和重新发布。不幸的是,这个问题在构建该镜像后无法解决——镜像edbizarro/gitlab-ci-pipeline-php 已经过时,必须更新。你不能以任何实际的方式处理事后的事......也许在你的工作中安装一个新版本的 PHP 内联(我怀疑这会很好用)?你只需要上游维护者来更新镜像——或者 fork 并自己更新并发布你自己的镜像。

标签: php docker gitlab


【解决方案1】:

您可以根据来自 gitlab-ci-pipeline-php 的原始 8.0 Dockerfile 创建自己的 docker 映像。

为此,只需克隆 git 存储库,创建新的 Dockerfile 并构建它。您可以将其推送到 docker hub,也可以使用 Gitlab 的 docker 注册表来存储您的 docker 镜像并将其用作项目的基础。

【讨论】:

    【解决方案2】:

    所以问题是图像已经过时了,除了创建自己的图像之外我无能为力,这真的不是我想做的事情。

    幸运的是,我找到了一个解决方案——一个不同的图像可以直接替换,而且效果很好。所以我更新了我的.gitlab-ci.yml 文件说:

    image: lorisleiva/laravel-docker:8.0
    

    所有测试都在运行并再次通过。

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多