【发布时间】:2020-01-09 16:03:58
【问题描述】:
我在 Django 中有应用程序。需求由许多库组成。在 Gitlab CI 的 linting 阶段之后,我想运行一些我编写的测试。为了能够运行 Postgres 和 Django,我必须安装要求,这需要一些时间。
是否有一些简单的方法可以缓存该映像以及所有已安装的要求,或者每次我想运行该测试时都必须重新安装它?在我看来这是不切实际的。
我可以在测试之前根据要求和上次构建的图像构建自定义图像作为缓存图像。我可以将自定义图像保存在个人注册表中,并在下一个工作中使用它进行测试。
linting --> build_job_image --> 测试 --> staging --> 生产
看起来比每次都安装更好,但仍然不是最好的主意。
我是 DevOps 的新手,所以我正在努力寻找最佳方法,但不知道最佳实践是什么。
我正在使用 python:3.7-alpine 图像来完成这项工作。
【问题讨论】:
-
使用您需要的工具构建映像,将其推送到公共/私有注册表并在 CI 管道中使用该映像。你甚至可以为这个镜像创建一个特定的 gitlab 存储库,添加一个 ci 来自动构建该镜像并将其推送到它自己的 gitlab docker 注册表中,然后从你的其他作业中提取它。
-
虽然它使用 github、travis ci 和 dockerhub 来代替完全集成的 gitlab 解决方案,但如果它可以帮助您,这里有一个示例:github.com/docker-ThoTeam/molecule_apache_openjdk8(免责声明:这是我自己维护的图像) .
-
要从 gitlab 构建 docker 镜像,以下链接可能会有所帮助:docs.gitlab.com/ee/ci/docker/using_docker_build.html
标签: django python-3.x docker gitlab-ci