问题标签 [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.

0 投票
2 回答
792 浏览

python - 如何为 python 应用程序创建多阶段 dockerfile?

下面是我的 python 应用程序的目录结构和 dockerfile。为了运行main.py,我需要通过运行创建一个数据集generate_data.py,它位于数据目录中。如何创建多级 dockerfile 以便首先创建数据然后运行main.py文件?我是使用 docker 的新手,我感到不知所措。

在此处输入图像描述

0 投票
2 回答
277 浏览

linux - 我们可以有一个多阶段的 Dockerfile,其中 FROM 下的图像可能与不同的 linux OS 发行版有关

是否可以使用多阶段Dockerfile,其中第一个基本映像属于 Ubuntu,然后第二个属于 Alpine。我知道使用此 Dockerfile 构建生成的最终映像无法在 Ubuntu 平台上执行,因为它还包含 Alpine 指令,如果您在 Alpine 上执行它也是如此。但我仍然想确认是否是这种情况

例如,这是我的示例 Dockerfile:

0 投票
2 回答
709 浏览

docker - 如何有条件地拉取 Docker 镜像的最新标签,而不是使用缓存版本?

我的 Dockerfile 包含这一行:

whatwg/wattsi即,它正在从Docker Hub 上可用的映像中复制可执行文件。这基本上直接来自多阶段构建的文档。

但是,一旦我运行 Dockerfile,它就会缓存whatwg/wattsi:latest. 然后,任何whatwg/wattsi被推送到 Docker Hub 的后续更新都将被忽略,并使用缓存的副本。(即,这整行被跳过,它创建的层被重用。)

我想要的行为是让 Docker 将远程whatwg/wattsi:latest与本地缓存副本进行比较,如果有差异则重新下载。那可能吗?

我想在不将版本硬编码到我的 Dockerfile 的情况下做到这一点,每次revswhatwg/wattsi都需要更新该版本。whatwg/wattsi

0 投票
0 回答
63 浏览

docker - Docker 多阶段构建问题

我当前的 Docker 文件如下所示。我正在尝试使用 h2o 作为我的 ML 模型服务的基础。现在 h2o 需要 JRE,我被迫为我的烧瓶脚本安装所需的包。它与 1.8 Gig 一样重,因此尝试了多阶段构建(下面的脚本)

我尝试按如下方式进行多阶段构建,但这只会导致 python 图像跳过 h2o 部分。我错过了什么?

0 投票
0 回答
4262 浏览

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:

和码头工人组成:

我该如何解决这个错误?

0 投票
1 回答
40 浏览

php - 如何在 docker 多阶段构建中从一个图像复制到另一个图像?

我想vendor在多阶段构建期间将文件夹从作曲家图像复制到另一个 php 图像。

我的 Dockerfile 看起来像这样:

只是在RUN pwd && ls那里表明文件确实在那里。

然而copy --from=composer失败说明:

我究竟做错了什么?


我的例子composer.json

0 投票
1 回答
707 浏览

java - 如果我们在 dockerfile 中使用 CMD,Docker 多阶段构建会失败

Dockerfile:

上面的 docker build 失败并出现错误:目标文件夹不存在
下面的 dockerfile 完美运行:

只需将 CMD 更改为 RUN 即可解决此问题。为什么会这样?我认为在间歇性容器中,cmd 会执行,这应该使两个命令等效吗?

0 投票
2 回答
81 浏览

docker - 多阶段构建只是加载最后一部分?

我是 docker 新手,我很确定这一定是一个愚蠢的错误(提前抱歉),但我正在尝试组合一些图像。第一个是安装软件(TEtranscripts),第二个我只想按原样拥有它(cellranger)。这是我的 Dockerfile:

构建此 ( ) 时我没有收到任何错误docker build --tag tecell .,但是当我运行它时 (docker run -i -t --name tecell tecell) 只有 cellranger 可用。如果我切换位置,例如:

只有 TEtranscripts 可用。

我正在查看有关它的官方教程,我注意到他们在传递到下一个FROM语句之前构建了应用程序,所以我猜是这样的,但我想解释一下如何/为什么使用它。

非常感谢您!:-)

0 投票
1 回答
4843 浏览

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.,我会收到以下错误

0 投票
1 回答
255 浏览

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 映像中包含输出时出了什么问题。