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

maven - docker multistage spring boot build pom + 内部依赖

我正在尝试进行 Spring Boot 多阶段构建,我有一个 Spring Boot 项目 X,其中包含两个 util 项目作为其他文件夹中的依赖项,当我尝试进行构建时它失败,因为该依赖项不存在。

我尝试使用多模块 maven 项目,但这个工具将用于其他项目。

(编辑)这是用于多级 Maven 构建的dockerfile

(编辑) docker build 命令和上下文路径来自父文件夹

这是项目X的​​ pom.xml

(编辑)添加文件夹结构:

0 投票
1 回答
46 浏览

docker - 如何使用标记的中间图像进行最终构建?

我创建了一个多阶段构建。

  • 第一阶段:使用 node:16.10-alpine 编译源码
  • 第 2 阶段:使用 alpine nginx 映像,从第一阶段复制构建文件夹,移动配置,公开端口,添加入口点。

这是 Dockerfile:

我会说,非常直截了当。我知道您运行docker build -t website:latest .它会创建一个中间图像<none>,即构建器图像,如果源或package.json.

所以,我的想法是builder像这样标记步骤:docker build --target builder -t website-builder .这样即使来源发生变化,它也只会使用相同的标签,而不是(如果我错了,请纠正我)创建其他图像。

如果我--target先运行带有标志的构建并在没有它的情况下再次运行构建,则不会使用构建器。

总结一下:

  1. docker build --target builder -t website-builder . 第一步
  2. docker build -t website:latest . 第二步

<none>创建了与 相同的新图像website-builder

如何实现构建器图像由“发布”阶段使用并重写(如果更改)?如果无法做到这一点,那么在这种情况下,最佳做法是什么?有吗?

谢谢你坚持。我感谢任何反馈或建议。

0 投票
1 回答
342 浏览

spring-boot - 如何将 Redis 运行到多阶段 Docker 映像构建中?

我正在做一个小的概念证明,并希望将Spring Boot应用程序运行Redis到同一个容器中。

我找到了多阶段构建文档官方 Redis 映像

我应该如何将它们连接在一起?即使这个概念似乎已经存在了几年,我仍然找不到相关的例子。

我的Dockerfile

0 投票
0 回答
750 浏览

docker - Docker 构建时间戳

运行 docker build 命令时是否可以在控制台/日志文件中获取步骤时间戳?

我想确定最慢的步骤,我希望是这样的:

0 投票
3 回答
1294 浏览

docker - 从多阶段 Docker 构建中提取文件

在多阶段 docker build 中,我执行单元测试,生成覆盖率报告并在构建阶段构建可执行文件,然后将可执行文件复制到运行阶段:

如何cover.out在 Jenkins 环境中提取以发布覆盖率报告?

0 投票
1 回答
2592 浏览

docker - Docker-compose 用于多阶段构建?

假设我们docker-compose.yml在不同的位置使用 Dockerfile 构建了一些服务,如下所示:

假设在 service1 的 Dockerfile 中,我们已经复制了一些文件夹。我可以将此文件夹传递给 service2 的 docker 文件吗?

换句话说 - 我可以使用多阶段构建技术在不同的 Dockerfile 之间传递层,还是多阶段构建应该只在一个 Dockerfile 中?

0 投票
1 回答
1557 浏览

docker - 无缓存的多阶段 docker 构建

我有一个多级 Dockerfile,如下所示。当 Dockerfile 中引用的映像之一更新时,如何确保在基于此 Dockerfile 构建映像时再次拉取最新版本/始终拉取最新版本。使用 --no-cache 运行 docker build 命令仍然引用旧版本的映像,但实际上并未从 docker 注册表中提取最新版本。

0 投票
0 回答
1881 浏览

docker - 在 ASP.NET Core 中作为 Docker 构建的一部分运行测试

我正在尝试将单元测试作为docker build流程的一部分运行,但我偶然发现了两个资源:

基本上,如果我理解正确,他们建议的要点是有这样的东西来运行测试,作为构建最终 docker 映像的一部分:

然后,在您的管道(例如,Azure Pipelines)中,您执行以下操作来复制/test-results第一阶段的内容(然后发布结果):

但是,这就是我发生的事情:如果一个或多个测试失败,当我创建 my 时test-container,目录/test-results不存在;我认为原因是因为测试在负责运行测试的中间容器中失败,整个 Docker 构建失败,因此,中间容器中的更改不会提交到映像,只有成功/test-results在返回的图像中可用的单元测试--filter=label=test=true

我还看到了另一种方法,其中创建了一个带有 an 的单独图像ENTRYPOINT以便能够运行测试。

在中运行 C# 单元测试的正确和推荐方法是docker什么?

0 投票
2 回答
2319 浏览

python - Multi-stage Dockerfile not working for python

Currently I am creating a virtual environment in the first stage. Running command pip install -r requirements.txt , which install executables in /venv/bin dir.

In second stage i am copying the /venv/bin dir , but on running the python app error comes as module not found i.e i need to run pip install -r requirements.txt again to run the app . The application is running in python 2.7 and some of the dependencies requires compiler to build . Also those dependencies are failing with alpine images compiler , and only works with ubuntu compiler or python:2.7 official image ( which in turn uses debian)

Am I missing some command in the second stage that will help in using the copied dependencies instead of installing it again .

I am trying to avoid pip install -r requirements.txt in second stage to reduce the image size which is not happening currently.

0 投票
2 回答
1145 浏览

git - Docker 多阶段构建 - 排除 .git 文件夹

我想做一个 docker 多阶段构建,但 rm/ignore .git 文件夹,以节省 docker 映像的空间。

COPY 是否有一些 --exclude 选项?这是一个相关问题:https ://forums.docker.com/t/dockerignore-in-multi-stage-builds/57169

另一种可能性是手动删除 .git 文件夹:

我假设多阶段构建从另一个阶段复制“最终层”?