- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在 Jenkins 中有几个“发布作业”xây dựng
Và push
应用程序的 Docker 镜像到 docker registry,更新各种文件中的项目版本,最后将发布标签推送到相应的 Git 存储库。整个过程在一个隔离的 Docker-in-Docker 容器中运行,这意味着每次执行这些 Jenkins 作业时,Docker 缓存都是完全空白的。
Nói tóm lại: Jenkins 实例 --> 启动 DinD 容器 --> Git 存储库被克隆到 DinD 容器内 --> 包含实际构建过程的多层 Dockerfile正在构建的应用程序 --> 将 docker 镜像推送到注册表 --> 将发布推送到 Git。
虽然这种隔离一方面有助于避免一些问题,但另一方面它使整个 docker 构建过程特别慢。
docker pull 和 docker push 进程肯定会在一定程度上造成这种延迟,但这是一个网络速度问题,我们无法处理 atm。
然而,造成这种延迟的另一个原因是,因为实际应用程序(maven 或 angular)是在一个“干净”的 docker 容器中构建的,其中 .m2 hoặc node_modules 目录每次都是空的,每次运行时必须下载/安装所有依赖项。显然,我们可以从 Jenkins 将 .m2 存储库挂载到 DinD 容器中,但是在此 DinD 容器中构建的图像将无法访问它。
我们尝试hắc ín
.m2 和 node_modules 目录,通过 Dockerfile COPY
它们在图像中,untar
它们并移动
他们到正确的路径,但此解决方法最多可保存 1-2 分钟。我们还尝试使用 buildkit
缓存 Maven 依赖项,例如https://www.baeldung.com/ops/docker-cache-maven-dependencies#caching-using-buildkit但这显然不是我们所需要的。
据我所知,不可能在 docker build
上挂载卷,这将是我们“空白缓存”情况下的理想解决方案。
有没有人遇到过类似的问题并找到了解决方法?
一般来说,如果您有任何关于如何最大限度地减少发布作业的执行时间并优化整个流程的建议,我们将不胜感激。
提前谢谢你。
1 Câu trả lời
就像评论中提到的 SiHa 一样,您可以拥有一个内部包含预构建依赖项的图像。这就是我可能会做的:
例如,使用轻量级的 node:16-alpine
图像(用于项目的 angular
部分),从 github 克隆代码(使用 depth= 1
以加快速度),运行 cài đặt npm
并将图像推送到您的存储库。在更新依赖项之前,您不必更改此图像。
在您的日常构建中,下载此镜像并克隆 github 代码,仅运行 npm run build
,bởi vì node_modules
文件夹已在镜像中。使用 FROM
将构建的代码复制到您的最终图像。
使用轻量级图像而不是克隆整个存储库应该会加快很多速度,并且使用具有预构建依赖项的图像khả thi比在图像中复制/提取依赖项更快 - 取决于硬件和网络速度。
关于docker - 最小化 Docker-in-Docker 容器内的 `docker build` 执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72541056/
这是我想做的 1 - 点击提交 2 - 隐藏 DIV 容器 1 3 - 显示 DIV 容器 2 4 - 将“PricingDisclaimer.php”中找到的所有 DIV 加载到 Div 容器 2
我有一个 ios 应用程序,它使用 iCloudcontainer 来保存用户的一些数据,例如用户的“到期日期”。我要用不同的方式创建应用程序的副本开发者账号。我要将用户从第一个应用程序迁移到第二个应
这是场景。 我有三个容器。 Container1、container2 和 container3(基于 Ubuntu 的镜像),其中 container2 充当容器 1 和容器 2 之间的路由器。 我
đóng cửa. Câu hỏi này cần được hỏi một cách tập trung hơn. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện điều này không? Cập nhật câu hỏi để tập trung vào một vấn đề duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện câu hỏi này
我正在改造管道以使用声明式管道方法,以便我能够 to use Docker images在每个阶段。 目前我有以下工作代码,它执行连接到在 Docker 容器中运行的数据库的集成测试。 node {
我正在开发一个需要尽可能简单地为最终用户安装的应用程序。虽然最终用户可能是经验丰富的 Linux 用户(或销售工程师),但他们对 Tomcat、Jetty 等并不真正了解,我认为他们也不应该了解。 所
我从gvisor-containerd-shim(Shim V1)移到了containerd-shim-runsc-v1(Shim V2)。在使用gvisor-containerd-shim的情况下,
假设我们只在某些开发阶段很少需要这样做(冒烟测试几个 api 调用),让项目 Bar 中的 dockerized web 服务访问 Project Foo 中的 dockerized web 服务的最
各位,我的操作系统是 Windows 10,运行的是 Docker 版本 17.06.0-ce-win19。我在 Windows 容器中运行 SQL Server Express,并且希望将 SQL
谁能告诉我,为什么我们不能在 Azure 存储中的容器内创建容器?还有什么方法可以处理,我们需要在 azure 存储中创建目录层次结构? 最佳答案 您无法在容器中创建容器,因为 Windows Azu
#include template struct Row { Row() { puts("Row default"); } Row(const Row& other) { puts
Theo tình hình hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, tài liệu tham khảo hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
RDF容器用于描述一组事物 例如,把一本书的所有作者列在一起 RDF容器有三种类型:
编辑:从到目前为止添加的答案和评论看来,我没有正确解释我想要什么。下面是一个例子: // type not supporting any type of comparison [] [] type b
我正在测试 spatie 的异步项目。我创建了一个这样的任务。 use Spatie\Async\Task; class ServiceTask extends Task { protecte
我想使用 Azure Blob 存储来上传和下载文档。有一些公司可以上传和下载他们的文档。我想保证这些文件的安全。这意味着公司只能看到他们的文件。不是别人的。 我可以在 blob 容器中创建多个文件夹
我正在尝试与 Azure 中的容器实例进行远程交互。我已执行以下步骤: 已在本地注册表中加载本地镜像 docker load -i ima.tar 登录远程 ACR docker登录--用户名--密码
我正在研究http://progrium.viewdocs.io/dokku/process-management/,并试图弄清楚如何从单个项目中运行多个服务。 我有一个Dockerfile的仓库:
我有一个想要容器化的单体应用程序。文件夹结构是这样的: --app | |-file.py <-has a variable foo that is passed in --configs
我正在学习 Docker,并且一直在为 Ubuntu 容器制作 Dockerfile。 我的问题是我不断获取不同容器之间的持久信息。我已经退出,移除了容器,然后移除了它的图像。在对 Dockerfil
Tôi là một lập trình viên xuất sắc, rất giỏi!