问题标签 [docker-multi-stage-build]
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.
linux - 我们可以有一个多阶段的 Dockerfile,其中 FROM 下的图像可能与不同的 linux OS 发行版有关
是否可以使用多阶段Dockerfile
,其中第一个基本映像属于 Ubuntu,然后第二个属于 Alpine。我知道使用此 Dockerfile 构建生成的最终映像无法在 Ubuntu 平台上执行,因为它还包含 Alpine 指令,如果您在 Alpine 上执行它也是如此。但我仍然想确认是否是这种情况
例如,这是我的示例 Dockerfile:
docker - 如何有条件地拉取 Docker 镜像的最新标签,而不是使用缓存版本?
我的 Dockerfile 包含这一行:
whatwg/wattsi
即,它正在从Docker Hub 上可用的映像中复制可执行文件。这基本上直接来自多阶段构建的文档。
但是,一旦我运行 Dockerfile,它就会缓存whatwg/wattsi:latest
. 然后,任何whatwg/wattsi
被推送到 Docker Hub 的后续更新都将被忽略,并使用缓存的副本。(即,这整行被跳过,它创建的层被重用。)
我想要的行为是让 Docker 将远程whatwg/wattsi:latest
与本地缓存副本进行比较,如果有差异则重新下载。那可能吗?
我想在不将版本硬编码到我的 Dockerfile 的情况下做到这一点,每次revswhatwg/wattsi
都需要更新该版本。whatwg/wattsi
docker - Docker 多阶段构建问题
我当前的 Docker 文件如下所示。我正在尝试使用 h2o 作为我的 ML 模型服务的基础。现在 h2o 需要 JRE,我被迫为我的烧瓶脚本安装所需的包。它与 1.8 Gig 一样重,因此尝试了多阶段构建(下面的脚本)
我尝试按如下方式进行多阶段构建,但这只会导致 python 图像跳过 h2o 部分。我错过了什么?
docker - app_1 | standard_init_linux.go:211:exec 用户进程导致“exec 格式错误”
我有一个 golang 应用程序,我创建了 dockerfile,它可以进行多权益构建。app_1 | standard_init_linux.go:211: exec user process caused "exec format error"
但是每次尝试做时我都会遇到这个错误docker-compose up
。Dockerfile:
和码头工人组成:
我该如何解决这个错误?
php - 如何在 docker 多阶段构建中从一个图像复制到另一个图像?
我想vendor
在多阶段构建期间将文件夹从作曲家图像复制到另一个 php 图像。
我的 Dockerfile 看起来像这样:
只是在RUN pwd && ls
那里表明文件确实在那里。
然而copy --from=composer
失败说明:
我究竟做错了什么?
我的例子composer.json
:
java - 如果我们在 dockerfile 中使用 CMD,Docker 多阶段构建会失败
Dockerfile:
上面的 docker build 失败并出现错误:目标文件夹不存在
下面的 dockerfile 完美运行:
只需将 CMD 更改为 RUN 即可解决此问题。为什么会这样?我认为在间歇性容器中,cmd 会执行,这应该使两个命令等效吗?
docker - 多阶段构建只是加载最后一部分?
我是 docker 新手,我很确定这一定是一个愚蠢的错误(提前抱歉),但我正在尝试组合一些图像。第一个是安装软件(TEtranscripts),第二个我只想按原样拥有它(cellranger)。这是我的 Dockerfile:
构建此 ( ) 时我没有收到任何错误docker build --tag tecell .
,但是当我运行它时 (docker run -i -t --name tecell tecell) 只有 cellranger 可用。如果我切换位置,例如:
只有 TEtranscripts 可用。
我正在查看有关它的官方教程,我注意到他们在传递到下一个FROM
语句之前构建了应用程序,所以我猜是这样的,但我想解释一下如何/为什么使用它。
非常感谢您!:-)
docker - 多阶段 dockerfile 跳过阶段
我正在尝试构建具有以下阶段的多阶段 dockerfile,但所有阶段都在执行。
即使我EXECUTION_ENV=local
在 docker build中指定了,我总是 c git clone 正在执行
Dockerfile:
Docker build cmds 试过:
注意:
如果我"features": { "buildkit": true}
在 docker daemon 中启用并运行 cmd docker build -t somecontainer --build-arg GIT_TOKEN=abc:123 --build-arg EXECUTION_ENV=local.
,我会收到以下错误
docker - Docker Multistage Build 在上一阶段的副本上失败
我正在处理一个多级 docker 构建文件,试图将一个额外的 war 文件添加到我们的基础 tomcat 映像中。我在带有 Docker for Windows 2.3.0.4 版本的 Windows 10 工作站上本地运行它,它使用 docker 引擎版本 19.03.12
我原来的 dockerfile 看起来像这样
我想要做的是从源代码构建 psi-probe 并将 war 文件添加到这个基础映像中。这是我到目前为止所拥有的
我可以运行docker build --target buildprobe -t buildprobe -f Dockerfile .
并构建输出。
mvn package
注意:我在尝试“调试”发生了什么之后添加了 ls 命令
maven 包和两个 ls 命令的输出是(截断的)
但是,当构建进入阶段 1 ( ) 时,它会在命令上FROM tomcat:9.0.21-jdk8-openjdk
失败COPY
对于我正在开发的 Angular 应用程序,我有一个类似的 dockerfile。该文件如下所示:
在这个文件中COPY
,上一阶段的工作正常并且图像构建
我只是不确定尝试从源代码构建 psi-probe 然后在我的 tomcat 映像中包含输出时出了什么问题。