问题标签 [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 回答
905 浏览

azure - 构建器拒绝 Azure DevOps CI 拉取访问,存储库不存在或可能需要“docker login”

我有一个 ASP.net 核心 Web 应用程序,想通过 devops IC 构建,但这里出现错误:步骤 12/13:COPY --from=build-env /app/out。从标志值 build-env 无效:对 build-env 的拉取访问被拒绝,存储库不存在或可能需要“docker login”

像这样的dockerfile:

谢谢你的帮助。

有输出消息

0 投票
1 回答
566 浏览

docker - 使用拉伸和高山进行多阶段构建

我正在尝试使用 -race 从 go stretch 构建,然后将其复制到小型高山容器以减小最终大小。但是我在启动时遇到了这个错误:

我的 Dockerfile:

sh`ing在容器中时我可以清楚地看到文件并且权限正确

0 投票
5 回答
3243 浏览

quarkus - Quarkus 原生可执行构建:高内存消耗

我正在使用多阶段 Docker 构建构建 Quarkus 本机可执行文件,如Quarkus - 构建本机可执行文件中所述

我的项目只包含Hello World-Example 和一些添加的 ORM 功能(因此并不是很多依赖项)。构建工作正常,但我的问题是,它在构建期间消耗了大量内存。这意味着高达6 GiB. 我认为构建时间也很长(总共约 4-6 分钟)。

当我在我们的 CI/CD 基础设施上构建时,问题就开始了。我们那里没有那么多内存,所以构建失败了Error: Image build request failed with exit status 137

我做错了什么还是这只是正常行为?是否有可能至少减少内存消耗?

0 投票
1 回答
3508 浏览

python - 用于烧瓶应用程序的 Docker 多阶段构建

我想 dockerizeflask具有很多依赖项的应用程序。我的目标是减小最终 docker 镜像的大小。

我尝试了多阶段构建,但它并没有减少最终 docker 映像的大小。

下面是我的Dockerfile

最后一个pip install...命令正在占用905MB

我应该如何将所有需求与最终映像分开并减小最终 docker 映像的整体大小?

0 投票
0 回答
213 浏览

docker - 构建 Dockerfile 中指定的所有目标?

假设我有Dockerfile这样的:

我想要一个使用 BuildKit运行所有这些目标的命令。

有没有简单的方法,还是我必须编写脚本?

0 投票
0 回答
76 浏览

windows - docker window容器使用multistage如何复制软件

在window容器中使用docker multistage时遇到问题,我有一些软件要安装在机器上,之后我只能复制安装目录,但仍有一些操作更新注册表或其他一些系统文件,如何复制所有他们到新的地方?我不知道文件在我的系统中的确切更新位置,所以我不知道如何将它们复制到新的地方,其他任何东西都非常感谢。

我尝试复制已安装的软件目录,但软件无法运行

看起来我在一台机器上安装了一个软件并尝试通过将目录从一台机器复制到另一台机器来运行相同的软件,但是在window server中,当你安装一些软件时,它会在系统中改变很多地方,只有复制文件不会使软件在另一台机器上运行,有什么想法吗?

0 投票
1 回答
4058 浏览

java - 如何在多阶段 docker build 中使用 maven 本地存储库?

我一直在尝试为我的 spring-boot-application 创建一个多阶段的 docker 构建。问题在于 master 分支上的每次更改,pom.xml 文件更改(感谢 maven 发布插件),因此在构建阶段使用 docker build-cache 有点困难,并且所有依赖项都会下载我运行构建的时间。据我所知,在构建映像期间我无法安装卷。docker 的实验版本允许您在构建过程中安装卷,但它仍然是实验性的,所以我试图避免它。

所以我决定用 docker-compose 试试运气,第一个服务将在容器内运行“mvn package”并在共享卷内创建一个 jar 文件,然后第二个服务将使用该文件构建自己的图像(基本上是在它的图像中添加那个 jar),它将被发布到 docker hub。无论我试图做什么似乎都不对。现在我在这里并不是真正的 docker-compose 专家,但这是正确的方法吗?
我在用着Docker version 18.09.0, build 4d60db4

有没有办法在第一阶段使用本地 .m2 存储库。或者欢迎任何其他建议。

0 投票
1 回答
241 浏览

docker - 不能使用在 Ubuntu 容器上运行的 docker 来执行 cd?

当我尝试在目录“/home/site/wwwroot”的要求中安装软件包时,出现以下错误

这是我的 dockerfile

我的 requirements.txt 是

如何解决?提前致谢

0 投票
1 回答
621 浏览

docker - Docker 多阶段构建与将工件保存在 git 中

我的目标容器是构建环境容器,因此我的团队将在统一的环境中构建应用程序。
此应用程序不一定作为容器运行 - 它在物理机上运行。该容器仅用于构建。

该应用程序依赖于第三方。
有些我可以apt-get installDockerfile RUN命令。
有些我必须自己建造,因为它们需要特殊的建造。

我想知道哪种方式更好。

  1. 使用多阶段构建看起来很酷;以 Dockerfile 为例:

优点:

  • 在我构建最终容器时自动构建
  • 易于更改第三方版本(在此示例中为提升)

缺点

  • ADD命令每次下载 ~100MB 文件,使图像构建过程变慢
  • 我想使用--cache-from这样我就可以third_party从不同的 docker 主机缓存和构建。这意味着我需要在 docker 注册表中存储 ~1.6GB 图像。拉/推非常重。

另一方面

  1. 例如,我可以构建 boost(使用此third_party图像)并将其工件存储在一些存储git中。它需要大约 200MB,这比存储 1.6GB 图像要好。

优点:

  • 更小的磁盘空间

缺点:

  • 繁琐的构建
    • 在更改 boost 版本时手动构建和推送工件到 git。
    • 以某种方式链接 Docker build 和 git 以提取最新的工件并COPY连接到最终图像。

在这两种方式中,我都需要一个third_party统一自动构建第三方的图像。在1.比这更大的图像2.中,将只包含构建工具,而不是构建工件。

这是权衡吗?
1.更自动化但消耗更多磁盘空间和推/拉时间,
2.是否繁琐但消耗更少磁盘空间和推/拉时间?

这些方式中的任何一种还有其他美德吗?

0 投票
1 回答
7974 浏览

docker - Docker 多阶段:如何在阶段之间复制构建的文件?

我是 Docker 的初学者,我正在尝试分两个阶段构建图像,如下所述:https ://docs.docker.com/develop/develop-images/multistage-build/

您可以选择性地将工件从一个阶段复制到另一个阶段

查看那里给出的示例,我认为可以在第一阶段构建一些文件,然后将它们提供给下一个阶段:

(示例取自上述链接页面)

这不是 theCOPY app.go .和 theCOPY --from=builder /go/src/github.com/alexellis/href-counter/app .应该做的吗?

我可能对正在发生的事情有一个完全的误解,因为当我尝试做类似的事情时(见下文),COPY第一阶段的命令似乎无法看到刚刚构建的文件(我可以确认它们实际上是使用一个RUN ls步骤构建的,但随后出现lstat <the file>: no such file or directory错误)。

事实上,我可以收集到的大多数其他信息COPY(除了上面链接中的示例)都表明这COPY实际上是为了从docker build启动命令的目录中复制文件,而不是从构建环境中复制文件。

这是我的 Dockerfile:

下面是当我docker build .从包含 Dockerfile 的目录运行时构建结束的方式:

我应该如何继续使构建的文件可用于下一阶段?