Dockerfile:是否允许多个FROM?

问题描述

我正在创建一个需要包含两个镜像的Docker镜像:

  1. 例如:Foo公司对Jenkins支持功能的印象:docker.foo.com/jenkins-build:latest
  2. 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语法在阶段之间复制文件来实现此目的。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...