如何防止 Dockerfile 缓存 git clone

2023-12-10

我有一个 Dockerfile 试图将 Web 应用程序打包并部署到容器中。应用程序的代码在 Docker 镜像构建期间从 git 存储库获取。 这是 Dockerfile 快照:

........
RUN git clone --depth=1 git-repository-url $GIT_HOME/
RUN mvn package -Dmaven.test.skip
........

我希望 docker 不要缓存以下步骤RUN git clone --depth=1 git-repository-url $GIT_HOME/以便存储库上的持续更新可以反映在 Docker 镜像构建上。有可能实现这一目标吗?


另一个解决方法:

如果您使用 GitHub(或者很可能使用 gitlab 或 bitbucket),您可以将存储库的 GitHub API 表示添加到虚拟位置。

ADD https://api.github.com/repos/$USER/$REPO/git/refs/heads/$BRANCH version.json
RUN git clone -b $BRANCH https://github.com/$USER/$REPO.git $GIT_HOME/

当 head 发生变化时,API 调用将返回不同的结果,从而使 docker 缓存失效。

如果您正在处理私人回购,您可以使用github的x-oauth-basic认证方案 with a 个人访问令牌像这样:

ADD https://$ACCESS_TOKEN:[email protected]/repos/$USER/$REPO/git/refs/heads/$BRANCH version.json

(谢谢@captnolimar 的建议编辑以澄清身份验证)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止 Dockerfile 缓存 git clone 的相关文章

  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • TortoiseGit - 更改默认合并消息

    系统描述 Windows 7的 git版本2 10 1 windows 1 乌龟Git 2 3 0 0 I want 合并提交消息在不同的情况下有所不同fully自动方式 no manual amend Summary 在windows上
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • 我应该将Python的pyc文件添加到.dockerignore吗?

    我见过几个例子 dockerignorePython 项目的文件 其中 pyc文件和 或 pycache 文件夹被忽略 pycache pyc 由于无论如何这些文件 文件夹都会在容器中重新创建 我想知道这样做是否是一个好习惯 是的 这是一个
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 如何将docker postgres镜像10.3中的pg_restore升级到10.5

    我使用 tableplus 作为我的一般管理员 目前使用 10 3 版本的 docker postgres 镜像进行生产和本地主机开发 因为tableplus将他们的postgres 10驱动程序升级到了10 5 所以我不能再使用pg re
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 是否可以将应用服务的发布方法从 Code 转换为 Docker?

    我已经设置了一个 Azure 应用服务 Linux 发布方法 Code 并设置了适当的管道来构建和部署我的代码 nodejs 现在我需要对运行我的代码的主机进行更多控制 需要 poppler 在开发 测试中 我创建了新的应用程序服务并选择
  • 如何获取 git 存储库中所有文件的计数?

    如何获取 git 存储库中当前所有文件的计数 您可以使用以下命令获取 git 存储库中所有跟踪文件的计数 git ls files wc l 命令分解 The git ls files命令本身打印出存储库中所有跟踪文件的列表 每行一个 Th
  • 如何使用 Docker 和 DigitalOcean Spaces 部署 TensorFlow Serving

    如何配置 TensorFlow Serving 以使用存储在 DigitalOcean Spaces 中的文件 重要的是解决方案 提供对这两个配置的访问and模型文件 提供对数据的非公开访问 我已经配置了一个名为your bucket na
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • docker 容器中的“(pygame parachute)分段错误”

    尝试在 docker 容器中使用 pygame 时出现以下错误 我想从容器中获取显示 Fatal Python error pygame parachute Segmentation Fault 重现 Docker已安装 docker ru
  • Android repo 脚本创建的 .repo/projects/ 中的裸 git 存储库的用途是什么?

    The 安卓源码 http android git kernel org 由以下人员管理repo http source android com source version control html 使用 repo 同步时 一个名为 re
  • 每次我执行 docker compose up 时,Docker 都会创建一个新卷

    我有一个 docker compose 文件 可以启动多个服务 我刚刚收到一条错误消息 指出我的磁盘空间不足 因此我输入 docker system df 并看到我有 21 个卷 如果我有 3 个 docker 容器 每个容器都附加一个卷
  • Git:忽略版本控制文件

    gitignore 文件对于忽略一些我们不想控制的文件非常有用 不幸的是 当文件已处于版本控制之下时 它无法使用 例如 我的 gitignore 已添加到 git 中 文件可能与我的同事想要的不同 例如我想忽略 Vim 文件 每当我对此文件
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31
  • 是否可以从 Github 网站或 API 获取分支合并列表?

    在我们的工作流程中 不会 直接 提交到主分支 主分支仅接收来自 Pull 请求的合并 我们可以将每次合并视为添加到主分支的新功能 因此 我想获得一个合并到 master 中的列表 作为一种可视化随着时间的推移添加到产品中的功能块的方式 gi
  • 在主机和子docker之间共享图像

    我读了这篇文章http blog docker io 2013 09 docker can now run within docker http blog docker io 2013 09 docker can now run withi
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • 为什么 Docker 不支持多租户?

    我看了这个关于 Docker 的 YouTube 视频 https www youtube com watch v vb7U 9AO7Ww22 00 演讲者 Docker 产品经理 说道 您可能会想 Docker 不支持多租户 您是对的 但

随机推荐

  • jQuery 链接 .load() 请求?

    所以我正在使用 jQuery load 刚才看来我们无法配置 example load uri ext ID 像这样链接 example load uri ext ID1 load uri ext ID2 load uri ext ID3
  • 从 _Layout.cshtml 调用部分视图

    我有一个主类别 主类别在数据库中有其子类别列表 所以它是一个关系数据库 为了更好地理解 附上了 edmx 地图图片 现在我的目标是一个名为 GuestNav cshtml 的部分视图将包含类别和子类别列表显示 然后从 Layout csht
  • Rails 3:Ajax 使用部分更新视图

    我对以下 Ajax 请求做错了什么 链接 调用 路线 match it business analysis gt informationtechnology business analysis as gt it business analy
  • 如何让irb和rails控制台在gitbash中正常工作?

    我在 Windows 7 上使用 gitbash 版本 2 9 0 64 位 它使用 mintty 版本 2 0 3 大多数时候 gitbash shell 似乎工作正常 您可以使用箭头键等 就像使用任何 bash shell 一样 它们会
  • 如何使用 python 访问 Azure AD 组列表?

    我是蟒蛇新手 我找到了以下示例代码来检索 Azure AD 组https msdn microsoft com en us Library Azure Ad Graph api groups operations Basicoperatio
  • 比较Java中的浮点数[重复]

    这个问题在这里已经有答案了 可能的重复 在java中操作和比较浮点数 在 Java 中比较浮点数时我应该使用 Epsilon 吗 Float compare float f1 float f2 静态方法可以安全使用吗 Thanks 编辑 我
  • 视图对聚合函数与结果集限制的性能影响

    问题 Using PostgreSQL 13 我遇到了一个性能问题 根据我执行的 select 语句 从连接两个表的视图中选择最高 id 这是一个示例设置 CREATE TABLE test1 id BIGSERIAL PRIMARY KE
  • 使用 MQTT 代理对 ESP8266 Wemos D1 Mini 进行 SSL 证书验证

    我有一个树莓派 3 其操作系统为 raspbianstretch 我已经按照本教程在树莓派上安装并完全配置了 MQTT 代理 https www digitalocean com community tutorials how to ins
  • 将基于度数的地理坐标与正则表达式进行匹配

    我希望能够识别表单的模式 28 44 30 N 33 12 36 E 这是我到目前为止所拥有的 use utf8 qr d 1 3 s s d 1 2 s s d 1 2 s s ENSW s s s 2 x 不用说 这不匹配 和扩展字符
  • JavaScript 关键字“with”真的被弃用了吗?

    使用JavaScriptwith长期以来 语句一直被认为是不好的编码实践 并被建议不要这样做 这一页表明with已被弃用 并且在严格模式下会抛出错误 我的浏览器在使用时会抛出错误with在严格模式下 Google Closure Compi
  • 动态创建的脚本不会阻止渲染?

    在本文中 https www html5rocks com en tutorials speed script loading 他们在说 动态创建并添加到文档中的脚本默认是异步的 它们不会阻止渲染 但 执行javascript 总是阻塞渲染
  • 如何对 URL 的西里尔字符进行编码然后解码?

    我在一页上有一个表格
  • 根据 Java 中的 Swagger 定义验证 JSON 消息

    我使用 Swagger 定义创建了一个 REST API 现在我需要使用该 swagger 架构验证传入消息 我找到了几种解决方案 但它们都依赖于某些特定的用例 最接近我需要的是this正如它的描述所示 它与提供的 json 模式配合得很好
  • 无法上传 apk:READ_EXTERNAL_STORAGE 具有不同的 maxSdkVersions

    这是我第一次在这里提问 不管怎样 正如标题所说 我正在尝试将我的应用程序推向市场 当我尝试上传签名的 apk 时 出现错误 上传失败具有不同 maxSdkVersions 的重复权限声明 android permission READ EX
  • Facebook App Invites iOS v4 SDK 错误

    我已经仔细检查了所有内容 根据我的理解 这就是我需要做的 self inviteContent FBSDKAppInviteContent alloc initWithAppLinkURL NSURL URLWithString http
  • Asterisk-如何使用 ChanSpy() 或任何替代方法“耳语”音乐? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我打算向其中一位会议参与者 耳语 音乐 消息文件 而不让其他会议参与者听到此消息 我浏览了 Asterisk Cookbook 中的音频操作章节 http ofps oreill
  • 如何在 Objective-C iphone sdk 中迭代嵌套字典

    您好 我有一个 json 字符串 已通过 JSON 框架转换为字典 我需要提取其内容 我怎样才能迭代到嵌套字典 我已经有了这段代码 可以让我查看字典 NSDictionary results responseString JSONValue
  • 如何使用 nav.popTo() (ionic 2)?

    我正在使用导航控制器 要返回 我可以使用 nav pop 但是如果我需要转到其他页面 不是最后一个页面 如何使用 nav popTo constructor nav NavController this nav nav this nav p
  • Numpy int 位长度

    我想找到以二进制表示无符号 numpy 整数 或整数数组中的每个元素 所需的位数 就像 python 的int bit length 确实如此 但 numpy 似乎没有等效的功能 例如 gt gt gt int 0b1000 bit len
  • 如何防止 Dockerfile 缓存 git clone

    我有一个 Dockerfile 试图将 Web 应用程序打包并部署到容器中 应用程序的代码在 Docker 镜像构建期间从 git 存储库获取 这是 Dockerfile 快照 RUN git clone depth 1 git repos