问题标签 [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.
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 行)都没有改变。
我错过了什么吗?
docker - 基于 Dockerfile 中的 CPU-Arch 设置条件
我需要直接从 GitHub 下载并安装一个包,并且我需要安装一些我需要的库,以便从源代码到pip
下线进行构建。
为此,我使用:
和
我想用 buildx 为不同的平台构建:
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 .
我amd64
不需要安装 av 库,因为 pip 不需要构建任何东西,因为提供了轮子。我需要安装库arm64
,arm/v7
我需要下载、提取和复制不同的geckodriver
包。
有没有办法根据 CPU 架构指定条件语句?
docker - 我可以直接将 docker pull 到本地注册表而不重新标记和推送吗?
我正在尝试使用 Python 在运行buildx
.
为了测试构建的加速,我想将应用程序 Dockerfile 拆分为来自(FROM
)“包”映像的“应用程序”映像,这样如果 Python 要求没有改变,我就不必每次都构建它(即一种缓存层)。
我的 Github Actions 工作流程是这样的:
- 确定是否存在具有相同
requirements.txt
文件哈希标记的“包”图像。 - 如果没有,构建这个“包”镜像,用
requirements.txt
文件的哈希标记它,并将镜像推送到 AWS ECR 以及本地注册表,跳到 4。 - 如果是,请下载“包”映像并将其推送到本地注册表。
- 使用本地注册表“包”图像作为
FROM
“应用程序”图像的多阶段构建。
第 3 步本应加快构建速度,但由于我必须通过本地注册表才能使第 4 步工作,因此我失去了所有获得的影响力。
我可以docker pull
将图像直接放入本地注册表吗?
现在,docker tag && docker push
进入本地注册表需要额外的时间。
任何帮助表示赞赏。
typescript - Dockerfile:无法计算缓存键:“/tsconfig.json”:未找到
我目前正在尝试设置 GitHub 操作,以自动构建后端并将其推送到 DockerHub。但是,如果触发了工作流,它将开始创建 Docker 映像,但在以下行中build-and-deploy-backend
失败:23
server/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
其他
docker - 在 linux/amd64 主机上构建 linux/arm64 docker 镜像
我正在运行一个 Jenkins Alpine Linux AMD64
docker 映像,我正在自己构建它并希望为其添加linux/arm64
docker buildx 支持,以便生成多平台映像,但我不知道它应该如何工作。
当我检查支持的平台时,我得到:
因为我在 AMD64 图像中。我读到我需要为此安装 qemu,但我不知道 buildx 将如何识别它。
文档在这方面相对简单:https ://docs.docker.com/buildx/working-with-buildx/
有人知道如何在 linux/amd64 映像中添加 linux/arm64 构建功能吗?
我现在看到的唯一解决方案是在实际的 arm64 系统上构建映像。
docker - 如果单个架构失败,如何使用 github CI 构建多拱 docker 映像而不会出现一般故障?
我试图阻止我的 github CI 完全失败,以防多架构 docker 映像的构建至少在架构上成功,这样这些架构的成功构建仍然被推送到 docker hub。到目前为止我所做的:
我还做的是:使用自己的架构标签为每个架构单独创建这个 CI,但是那样,我没有“多架构”标签。
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。话虽如此,我发现更新的版本确实安装得更快,但同样它们没有线性分配模块,这是我的应用程序的依赖项。任何帮助或指导将不胜感激。
docker - 在 ansible 上构建多架构 docker 映像?
就像现在一样,可以docker build
使用community.docker集合生成图像:
(来自文档的示例)
我的问题很简单。根据他们的文档,该platform
领域似乎只允许一种架构:
平台格式
os[/arch[/variant]]
。
(注意“平台”而不是“平台”,该类型是“字符串”而不是字符串列表)
是否可以使用 community.docker 集合进行多架构构建(例如amd64
and )?arm
当然,我可以使用 shell/command 来代替:
但是是否可以使用集合中现在可用的内容?
docker - 具有不同基础镜像的 Docker buildx
我想为amd64
和 Nvidial4t
平台构建图像。现在我将基本图像名称传递amd64/debian:buster-slim
到nvcr.io/nvidia/l4t-base:r32.6.1
我的Dockerfile
. 然后,我运行一个 shell 脚本,它使用不同的基本映像名称调用docker build
两次--build-arg
。
我读过docker buildx
这似乎很有趣。但是我还没有找到如何为我的目标平台定义不同的基本图像。
这可能吗?
python - 如何更快地安装/编译 pip 要求(轮子)
我目前正在寻找一种解决方案来加快我们的构建过程。构建我们的 arm/v7 车轮需要花费大量时间pip3 install
。我试图通过设置Pip 构建选项export MAKEFLAGS="-j$(nproc)" \
中提到的以下 MAKEFLAG 来加速该过程,以使用多核来通过 make 增加使用的 cpu 核心的数量。不幸的是,这并没有带来任何改善。有人对如何加快车轮的制造过程有任何想法吗?