为 GitLab CI 准备亚马逊 Linux 图像
Prepare Amazon Linux image for GitLab CI
我是 运行 自托管的 GitLab CE,有一个 GitLab 运行器和一个 Docker 执行器。我想为 AWS Lambda 构建一个二进制文件,所以我正在为我的 Docker 执行程序使用 amazonlinux:latest 图像。
当然,并非我构建所需的所有软件包都在基础 amazonlinux 映像中可用,因此我通过 yum 安装它们。不幸的是,cmake 不适用于 Amazon Linux,因此我从源代码构建它。
目前,每次管道运行时都会发生这种情况,这不是最佳选择,因为 cmake 需要相对较长的时间来构建(与我实际想要构建的二进制文件相比)。
我的一般问题是:是否有一种干净且可重现的方法来准备构建图像,然后将其用作 GitLab CI 的基础图像?由于我对 Docker 和朋友们比较陌生,在运行器主机上本地创建图像并在我的 gitlab-ci.yml 中使用它是正确的方法吗?或者我应该把它放在注册表中(甚至可能是 GitLab 自己的容器注册表?)
是的。
没有什么可以阻止您通过 Docker 文件创建映像,该文件执行所有 yum 安装,然后将您构建的映像推送到(私有)Docker 注册表。将其视为 'extending' 亚马逊图片并保存以备将来使用。
由于我不希望它退出(它还不包含任何应用程序代码),您也可以免费将其存储在 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
这样的固定版本,以避免您不期望的主要版本更改。
我是 运行 自托管的 GitLab CE,有一个 GitLab 运行器和一个 Docker 执行器。我想为 AWS Lambda 构建一个二进制文件,所以我正在为我的 Docker 执行程序使用 amazonlinux:latest 图像。
当然,并非我构建所需的所有软件包都在基础 amazonlinux 映像中可用,因此我通过 yum 安装它们。不幸的是,cmake 不适用于 Amazon Linux,因此我从源代码构建它。
目前,每次管道运行时都会发生这种情况,这不是最佳选择,因为 cmake 需要相对较长的时间来构建(与我实际想要构建的二进制文件相比)。
我的一般问题是:是否有一种干净且可重现的方法来准备构建图像,然后将其用作 GitLab CI 的基础图像?由于我对 Docker 和朋友们比较陌生,在运行器主机上本地创建图像并在我的 gitlab-ci.yml 中使用它是正确的方法吗?或者我应该把它放在注册表中(甚至可能是 GitLab 自己的容器注册表?)
是的。
没有什么可以阻止您通过 Docker 文件创建映像,该文件执行所有 yum 安装,然后将您构建的映像推送到(私有)Docker 注册表。将其视为 'extending' 亚马逊图片并保存以备将来使用。
由于我不希望它退出(它还不包含任何应用程序代码),您也可以免费将其存储在 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
这样的固定版本,以避免您不期望的主要版本更改。