问题描述
我正在创建一个需要包含两个镜像的Docker镜像:
- 例如:Foo公司对Jenkins支持功能的印象:
docker.foo.com/jenkins-build:latest
- cypress/included:4.12.1
此图像将被标记为docker.foo.com/cypress-build
Dockerfile
脚本如下:
# Image containing company Foo's Jenkins build
FROM docker.foo.com/jenkins-build:latest
# Main image that include all operating system dependencies necessary to run Cypress,# but NOT the test runner itself.
FROM cypress/included:4.12.1
此Dockerfile
在具有多个FROM
的脚本编写中是否有效?
如果没有,那么必须做些什么来纠正它?
谢谢,非常感谢您的反馈!
解决方法
是的,允许多条FROM
行。这是multi-stage build实现的一部分。每条FROM
行都作为一个新映像开始一个新的阶段,该映像仅包括该FROM
行的文件系统层和配置。最后标记的图像要么是要构建的最后一个阶段,要么是目标阶段(如果您指导构建以标记特定阶段的话)。
请注意,多阶段不是某种形式的多重继承或图像合并过程。那是不存在的,并且没有实现它的简单方法。多阶段构建旨在允许将构建环境移至docker环境,而无需在分布式映像中包含编译器和其他构建工具。通过允许使用COPY --from
语法在阶段之间复制文件来实现此目的。