问题标签 [buildx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
28 浏览

docker - pip install 的 Docker 缓存奇怪行为

我正在 GitHub Actions 工作流程中构建 Docker 容器,并且我有一个使用Docker buildx的自定义缓存解决方案。本质上,我使用docker buildx 构建 --cache-from--cache-to参数来转储上一次构建的缓存,将其存储在外部,然后为下一次构建加载它以节省时间。

在大多数情况下,这工作得很好。大部分构建时间都花在了pip install我们使用 Alpine 并且没有可用的轮子上,因此它必须构建包,因此使用缓存跳过这一步可以节省大量资金。

Dockerfile 中有两个相关的行:

不过,我遇到了这个奇怪的问题, whererequirements.txt没有改变,第一行 (the COPY) 正确使用缓存,但第二行 (the RUN) 不使用缓存,并继续重新构建所有包。

我无法弄清楚是什么原因造成的。如果COPY正确使用缓存,那么它必须识别出requirements.txt没有改变,如果requirements.txt没有改变,我不明白为什么它不会为RUN命令使用缓存。

最糟糕的是,它是间歇性的。一些构建它使用缓存,一些构建它重新构建包,在这两种情况下requirements.txt(或任何前面的 Dockerfile 行)都没有改变。

我错过了什么吗?

0 投票
0 回答
47 浏览

docker - 基于 Dockerfile 中的 CPU-Arch 设置条件

我需要直接从 GitHub 下载并安装一个包,并且我需要安装一些我需要的库,以便从源代码到pip下线进行构建。

为此,我使用:

我想用 buildx 为不同的平台构建: docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 .

amd64不需要安装 av 库,因为 pip 不需要构建任何东西,因为提供了轮子。我需要安装库arm64arm/v7我需要下载、提取和复制不同的geckodriver包。

有没有办法根据 CPU 架构指定条件语句?

0 投票
0 回答
20 浏览

docker - 我可以直接将 docker pull 到本地注册表而不重新标记和推送吗?

我正在尝试使用 Python 在运行buildx.

为了测试构建的加速,我想将应用程序 Dockerfile 拆分为来自(FROM)“包”映像的“应用程序”映像,这样如果 Python 要求没有改变,我就不必每次都构建它(即一种缓存层)。

我的 Github Actions 工作流程是这样的:

  1. 确定是否存在具有相同requirements.txt文件哈希标记的“包”图像。
  2. 如果没有,构建这个“包”镜像,用requirements.txt文件的哈希标记它,并将镜像推送到 AWS ECR 以及本地注册表,跳到 4。
  3. 如果是,请下载“包”映像并将其推送到本地注册表。
  4. 使用本地注册表“包”图像作为FROM“应用程序”图像的多阶段构建。

第 3 步本应加快构建速度,但由于我必须通过本地注册表才能使第 4 步工作,因此我失去了所有获得的影响力。

我可以docker pull将图像直接放入本地注册表吗? 现在,docker tag && docker push进入本地注册表需要额外的时间。

任何帮助表示赞赏。

0 投票
0 回答
84 浏览

typescript - Dockerfile:无法计算缓存键:“/tsconfig.json”:未找到

我目前正在尝试设置 GitHub 操作,以自动构建后端并将其推送到 DockerHub。但是,如果触发了工作流,它将开始创建 Docker 映像,但在以下行中build-and-deploy-backend失败:23server/Dockerfile

见:https ://github.com/bennodev19/dronies-watch/runs/4813916640?check_suite_focus=true

出现此错误:

见:https ://github.com/bennodev19/dronies-watch/runs/4813916640?check_suite_focus=true

在本地它构建没有任何问题。MacOS在和上测试Windows 10

build-and-deploy-backend

查看完整文件:https ://github.com/bennodev19/dronies-watch/blob/master/.github/workflows/release.yaml

server/Dockerfile

查看完整文件:https ://github.com/bennodev19/dronies-watch/blob/master/server/Dockerfile

其他

0 投票
1 回答
198 浏览

docker - 在 linux/amd64 主机上构建 linux/arm64 docker 镜像

我正在运行一个 Jenkins Alpine Linux AMD64docker 映像,我正在自己构建它并希望为其添加linux/arm64docker buildx 支持,以便生成多平台映像,但我不知道它应该如何工作。

当我检查支持的平台时,我得到:

因为我在 AMD64 图像中。我读到我需要为此安装 qemu,但我不知道 buildx 将如何识别它。

文档在这方面相对简单:https ://docs.docker.com/buildx/working-with-buildx/

有人知道如何在 linux/amd64 映像中添加 linux/arm64 构建功能吗?

我现在看到的唯一解决方案是在实际的 arm64 系统上构建映像。

0 投票
0 回答
30 浏览

docker - 如果单个架构失败,如何使用 github CI 构建多拱 docker 映像而不会出现一般故障?

我试图阻止我的 github CI 完全失败,以防多架构 docker 映像的构建至少在架构上成功,这样这些架构的成功构建仍然被推送到 docker hub。到目前为止我所做的:

我还做的是:使用自己的架构标签为每个架构单独创建这个 CI,但是那样,我没有“多架构”标签。

0 投票
0 回答
23 浏览

docker - 关于 scikit_learn 安装

您好,感谢您查看此内容。我一直在使用 docker 创建各种多架构构建。我注意到一些有趣的行为。当尝试运行 buildx 来创建图像时,scikit_learn 0.21.3 需要很长时间来下载/安装(大约 2.5 小时)。但是,在单个拱门上通过 docker 使用常规构建命令时,只需要大约 10 分钟左右。我必须使用这个特定版本的 scikit_learn 的原因是我从我的应用程序收到一个错误,它无法找到 sklearn.utils.linear_assignment 模块。我收到这个\nModuleNotFoundError: No module named 'sklearn.utils.linear_assignment_' 到目前为止,我能够运行的唯一版本是 0.21.3。话虽如此,我发现更新的版本确实安装得更快,但同样它们没有线性分配模块,这是我的应用程序的依赖项。任何帮助或指导将不胜感激。

0 投票
0 回答
28 浏览

docker - 在 ansible 上构建多架构 docker 映像?

就像现在一样,可以docker build使用community.docker集合生成图像:

(来自文档的示例)

我的问题很简单。根据他们的文档,该platform领域似乎只允许一种架构:

平台格式os[/arch[/variant]]

(注意“平台”而不是“平台”,该类型是“字符串”而不是字符串列表)

是否可以使用 community.docker 集合进行多架构构建(例如amd64and )?arm当然,我可以使用 shell/command 来代替:

但是是否可以使用集合中现在可用的内容?

0 投票
0 回答
19 浏览

docker - 具有不同基础镜像的 Docker buildx

我想为amd64和 Nvidial4t平台构建图像。现在我将基本图像名称传递amd64/debian:buster-slimnvcr.io/nvidia/l4t-base:r32.6.1我的Dockerfile. 然后,我运行一个 shell 脚本,它使用不同的基本映像名称调用docker build两次--build-arg

我读过docker buildx这似乎很有趣。但是我还没有找到如何为我的目标平台定义不同的基本图像。

这可能吗?

0 投票
0 回答
29 浏览

python - 如何更快地安装/编译 pip 要求(轮子)

我目前正在寻找一种解决方案来加快我们的构建过程。构建我们的 arm/v7 车轮需要花费大量时间pip3 install。我试图通过设置Pip 构建选项export MAKEFLAGS="-j$(nproc)" \中提到的以下 MAKEFLAG 来加速该过程,以使用多核来通过 make 增加使用的 cpu 核心的数量。不幸的是,这并没有带来任何改善。有人对如何加快车轮的制造过程有任何想法吗?