问题标签 [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 投票
1 回答
78 浏览

kubernetes - Docker 多阶段

是否可以将多阶段 Dockerfile 的一个阶段复制到另一个阶段?

由于各种业务原因,我被指示使用多阶段 Dockerfile,但我真正需要做的是将 appserver 映像和 webserver 映像结合起来。这在 docker-compose 中很好,因为您可以参考每个部分 - 但我不确定这是否可以通过 GCP 和 Kubernetes 完成。

我的 Dockerfile 代码如下。

0 投票
2 回答
795 浏览

docker - 如何将 microk8s 与较新的 Docker 一起使用?

我目前在我的 Ubuntu 18.04 安装上以稳定的形式 (v1.12.0) 运行microk8s。它带有 Docker 17.03.2-ce,它缺乏对多阶段构建的支持,在 Docker 17.05 中添加。microk8s 文档建议不要在系统上使用任何其他 Docker(至少只要 AppArmor 处于打开状态)。

有没有办法用更新版本的 Docker 运行 microk8s,这样我就可以使用多阶段构建功能,而不会危及系统的安全性?

0 投票
1 回答
377 浏览

node.js - 多阶段 Dockerfile 导致空间不足

由于我的代码(nodeJS-application)比(npm)依赖项更频繁地更改,我试图在我的 CI 中构建类似缓存的东西。

我正在使用多阶段 Dockerfile。在那我运行 npm install 为所有,而且只有,prod 依赖项。后来它们被复制到最终图像中,使其更小。伟大的。

如果没有更改依赖项,构建也会变得非常快。

然而,随着时间的推移,高清已经满了,所以我必须跑去docker prune ...拿回空间。但是,当我这样做时,缓存就消失了。

因此,如果我prune在 CI 中的每个管道之后运行一个,我不会获得多阶段 Dockerfile 的“缓存功能”。

0 投票
1 回答
3952 浏览

c++ - 如何在多阶段 Docker 构建的阶段之间复制库文件,同时保留符号链接?

我有一个 Dockerfile,它分为两阶段多阶段 docker 构建。第一阶段生成一个基本的 gcc 构建环境,其中编译了许多 C 和 C++ 库。第二阶段使用COPY --from=命令将库文件从第一阶段复制/usr/local/lib/libproto*到当前图像的。

我看到的问题是第一个图像包含从通用库文件名到特定版本化文件名的符号链接。AFAIK 这是 Debian 和许多其他 Linux 系统中的常见做法。Docker 的COPY命令似乎不理解符号链接,因此制作了库文件的两个完整副本。这会导致更大的 Docker 映像大小和来自后续apt-get命令的警告ldconfig: /usr/local/lib/libprotobuf.so.17 is not a symbolic link


我的特定文件目前看起来像:

如您所见,我正在尝试将最新版本的 gRPC 和 Protocol Buffer 添加到基于 Debian 的运行时映像中。

0 投票
1 回答
490 浏览

angular - 在 docker 多阶段构建期间选择 angular.json 配置

我正在构建带有 docker 多阶段构建的 angular6 应用程序。由 angular.cli 创建的默认 angular.json 包含一个包含配置列表的构建部分。我可以使用以下命令选择特定配置

但在我的 docker 多阶段构建中,我不能直接使用 ng,只能使用 npm

使用“npm run build”会启动“ng build”,但我不知道如何提供附加参数“--configuration production”来选择特定配置。

这是我的 angular.json 文件的一大块

那是我的 dockerfile

0 投票
1 回答
353 浏览

docker - 在 docker hub 上扩展多阶段构建镜像的阶段

在多阶段构建的支持下,在一定程度上维护 repos 变得很方便。但是如何扩展这些存储库?

到目前为止,您可以使用命令--target中的构建特定标签的图像。docker build

在 docker-compose 中,您可以使用target条目中的context条目来指定它。

就我而言,我想使用来自 docker hub 的图像并扩展特定目标。现在,我正在使用一个 Dockerfile(我从 docker-compose 调用它,但这不重要),它具有

该 repo 在其 Dockerfile 中有 3 个目标,分别命名为sample-nameextendssample-name-fullsample-namewhich sample-name-devextends sample-name-full。这些名称中的破折号就像 repo 命名它们的目标一样。

似乎正在发生的事情是,我将第一个目标作为构建目标(或者我认为我这样做),它以 repo 本身命名。比方说,我怎样才能扩展中间目标?

我试过像

等等,但我无法让它工作。

0 投票
1 回答
318 浏览

docker - Dockerfile 中的空多阶段构建

我了解使用多阶段构建的目的,但我不明白您为什么想要这样的阶段?有人可以详细说明用例吗?

来源:https ://raw.githubusercontent.com/kubeflow/examples/master/xgboost_ames_housing/Dockerfile

0 投票
1 回答
6437 浏览

docker - Docker Multi-Stage:如何拆分成多个 Dockerfile

我成功地使用了 Docker 的多阶段功能来构建一些代码,然后将生成的工件复制到最终图像中。

是否可以将这个庞大的 Dockerfile 拆分为多个文件?

我想提高各个阶段的可读性。当添加更多阶段时,这将变得更加重要。

编辑:我知道我可以编写一个 Makefile(或类似文件),我首先构建一个名为“myproject-stage1”的图像,然后使用FROM myproject-stage1 AS build. 但是,如果可能,我宁愿避免使用外部构建工具。

0 投票
2 回答
19184 浏览

docker - 多阶段 Dockerfile 中的共享变量:未替换 FROM 之前的 ARG

我正在为darshan utils编写一个多阶段的 Dockerfile :

我用它构建它,docker build -t darshan-util:3.6.1 .我得到的错误是:

我想在两个阶段重用相同的 ARG,这样我就可以只定义一次默认构建变量。如果我在两个阶段复制 ARG,就在两个 FROM 的下方,它会正确构建。

用默认值定义“全局”多阶段 ARG 变量的正确方法是什么?

0 投票
0 回答
448 浏览

docker - 使用 yum 为 Docker 多阶段构建需要复制的工件集

我正在尝试从 centos 构建多级 docker 映像

如上所示,我从 python-base 阶段构建了 python37。在这里,我将所需的工件从 python-base 复制到了 python37 阶段。

所以我的问题是,需要从 httpd-base 阶段复制哪些工件以构建具有 httpd 的映像,而不是仅在安装期间需要的所有开发工具。

在这方面的任何最佳实践也值得赞赏。提前致谢。