问题标签 [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.
maven - docker multistage spring boot build pom + 内部依赖
我正在尝试进行 Spring Boot 多阶段构建,我有一个 Spring Boot 项目 X,其中包含两个 util 项目作为其他文件夹中的依赖项,当我尝试进行构建时它失败,因为该依赖项不存在。
我尝试使用多模块 maven 项目,但这个工具将用于其他项目。
(编辑)这是用于多级 Maven 构建的dockerfile
(编辑) docker build 命令和上下文路径来自父文件夹
这是项目X的 pom.xml
(编辑)添加文件夹结构:
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
先运行带有标志的构建并在没有它的情况下再次运行构建,则不会使用构建器。
总结一下:
docker build --target builder -t website-builder .
docker build -t website:latest .
<none>
创建了与 相同的新图像website-builder
。
如何实现构建器图像由“发布”阶段使用并重写(如果更改)?如果无法做到这一点,那么在这种情况下,最佳做法是什么?有吗?
谢谢你坚持。我感谢任何反馈或建议。
spring-boot - 如何将 Redis 运行到多阶段 Docker 映像构建中?
我正在做一个小的概念证明,并希望将Spring Boot
应用程序运行Redis
到同一个容器中。
我找到了多阶段构建文档和官方 Redis 映像。
我应该如何将它们连接在一起?即使这个概念似乎已经存在了几年,我仍然找不到相关的例子。
我的Dockerfile
:
docker - Docker 构建时间戳
运行 docker build 命令时是否可以在控制台/日志文件中获取步骤时间戳?
我想确定最慢的步骤,我希望是这样的:
docker - 从多阶段 Docker 构建中提取文件
在多阶段 docker build 中,我执行单元测试,生成覆盖率报告并在构建阶段构建可执行文件,然后将可执行文件复制到运行阶段:
如何cover.out
在 Jenkins 环境中提取以发布覆盖率报告?
docker - Docker-compose 用于多阶段构建?
假设我们docker-compose.yml
在不同的位置使用 Dockerfile 构建了一些服务,如下所示:
假设在 service1 的 Dockerfile 中,我们已经复制了一些文件夹。我可以将此文件夹传递给 service2 的 docker 文件吗?
换句话说 - 我可以使用多阶段构建技术在不同的 Dockerfile 之间传递层,还是多阶段构建应该只在一个 Dockerfile 中?
docker - 无缓存的多阶段 docker 构建
我有一个多级 Dockerfile,如下所示。当 Dockerfile 中引用的映像之一更新时,如何确保在基于此 Dockerfile 构建映像时再次拉取最新版本/始终拉取最新版本。使用 --no-cache 运行 docker build 命令仍然引用旧版本的映像,但实际上并未从 docker 注册表中提取最新版本。
docker - 在 ASP.NET Core 中作为 Docker 构建的一部分运行测试
我正在尝试将单元测试作为docker build
流程的一部分运行,但我偶然发现了两个资源:
- .NET Core 多阶段 Dockerfile,在 Azure Pipelines 中具有测试和代码覆盖率
- 使用 Docker 和 Azure Pipelines(第一个引用)运行 .NET Core 单元测试。
基本上,如果我理解正确,他们建议的要点是有这样的东西来运行测试,作为构建最终 docker 映像的一部分:
然后,在您的管道(例如,Azure Pipelines)中,您执行以下操作来复制/test-results
第一阶段的内容(然后发布结果):
但是,这就是我发生的事情:如果一个或多个测试失败,当我创建 my 时test-container
,目录/test-results
不存在;我认为原因是因为测试在负责运行测试的中间容器中失败,整个 Docker 构建失败,因此,中间容器中的更改不会提交到映像,只有成功/test-results
在返回的图像中可用的单元测试--filter=label=test=true
我还看到了另一种方法,其中创建了一个带有 an 的单独图像ENTRYPOINT
以便能够运行测试。
在中运行 C# 单元测试的正确和推荐方法是docker
什么?
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.
git - Docker 多阶段构建 - 排除 .git 文件夹
我想做一个 docker 多阶段构建,但 rm/ignore .git 文件夹,以节省 docker 映像的空间。
COPY 是否有一些 --exclude 选项?这是一个相关问题:https ://forums.docker.com/t/dockerignore-in-multi-stage-builds/57169
另一种可能性是手动删除 .git 文件夹:
我假设多阶段构建从另一个阶段复制“最终层”?