【问题标题】:Prepare Amazon Linux image for GitLab CI为 GitLab CI 准备 Amazon Linux 映像
【发布时间】:2018-06-24 08:37:54
【问题描述】:

我正在运行带有 GitLab 运行器和 Docker 执行器的自托管 GitLab CE。我想为 AWS Lambda 构建一个二进制文件,因此我将 amazonlinux:latest 映像用于我的 Docker 执行程序。

当然,并非我构建所需的所有软件包都在基础 amazonlinux 映像中可用,因此我通过 yum 安装它们。不幸的是,cmake 不适用于 Amazon Linux,所以我从源代码构建它。

目前,每次管道运行时都会发生这种情况,这不是最佳的,因为 cmake 需要相对较长的时间来构建(与我实际想要构建的二进制文件相比)。

我的一般问题是:是否有一种干净且可重现的方法来准备构建图像,然后将其用作 GitLab CI 的基础图像?由于我对 Docker 和朋友们比较陌生,在运行程序主机上本地创建图像并在我的 gitlab-ci.yml 中使用它的正确方法是什么?或者我应该把它放在一个注册表中(甚至可能是 GitLab 自己的容器注册表?)

【问题讨论】:

    标签: gitlab-ci amazon-linux


    【解决方案1】:

    是的。

    没有什么能阻止您通过 Dockerfile 创建映像,该文件执行所有 yum 安装,然后将您构建的映像推送到(私有)Docker 注册表。将其视为“扩展”亚马逊图像并将其保存以备将来使用。

    由于我不希望它退出(它还不包含任何应用程序代码),您也可以将其免费存储在Docker Hub

    自定义图片

    举个例子Dockerfile

    FROM amazonlinux:latest
    
    RUN yum install <packages>
    RUN <commands for cmake>
    

    然后您构建您的自定义amazonlinux-custom 图像:

    docker build -t mydockerhubuser/amazonlinux-custom:latest .
    

    并将其推送到 Docker Hub(docker login 之后):

    docker push mydockerhubuser/amazonlinux-custom:latest
    

    Gitlab CI 使用

    在您的.gitlab-ci.yml 中,您将定义您的工作形象的image: amazonlinux:latest 部分替换为image: mydockerhubuser/amazonlinux-custom:latest,这样您就不必安装所有的部门。

    注意

    Amazon 通常会重建其amazonlinux:latest 映像并将其推送到 Docker Hub。使用基于他们的自定义图像,您必须考虑以下几点:

    • 您还需要经常重建映像,以保持最新的补丁等。
    • 使用它可能更聪明,例如像FROM: amazonlinux:2017.09 这样的固定版本,以避免您不期望的主要版本更改。

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 2017-08-13
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      相关资源
      最近更新 更多