返回顶部
首页 > 资讯 > 服务器 >Dockerfile多个from的使用及多个build-arg的使用示例
  • 937
分享到

Dockerfile多个from的使用及多个build-arg的使用示例

linux运维服务器 2023-08-18 19:08:28 937人浏览 独家记忆
摘要

目录 多个from多个build-argDockerfile示例 多个from   从Docker17.05版本开始,新增了Dockerfile多阶段(multistage)构建,dockerfile中允许使用多个FROM指令。

多个from

  从Docker17.05版本开始,新增了Dockerfile多阶段(multistage)构建,dockerfile中允许使用多个FROM指令。
  多个 FROM 指令并不是为了生成多根的层关系,最后生成的镜像仍以最后一条 FROM 为准,之前的 FROM 会被抛弃,那么之前的FROM 又有什么意义呢?
  每一条 FROM 指令都是一个构建阶段,多条 FROM 就是多阶段构建,虽然最后生成的镜像只能是最后一个阶段的结果,但是,能够将前置阶段中的文件拷贝到后边的阶段中,这就是多阶段构建的最大意义。
  该特性最大的使用场景是可以使编译环境和发布环境分离。详见下文示例。

多个build-arg

  使用 --build-arg 可以在build时将参数传入到Dockerfile中,执行build命令示例如下:
  docker build --build-arg TMP_IMAGE=“xxx:latest” --build-arg RUNTIME_IMAGE=“xxx/java-8-runtime:latest” -t newImageName:0.0.1 .
  Dockerfile中需要使用ARG命令定义变量名,并使用 ${参数名} 来获取参数值,注意:在FROM之后用的,需要再次使用ARG命令定义。 Dockerfile示例详见下文示例。

Dockerfile示例

############### 把 buildImage 编译好的临时镜像中的jar包拷贝到runtimeImage 中# build 成新的 镜像##############ARG TMP_IMAGEARG RUNTIME_IMAGEFROM ${TMP_IMAGE} as stage-tempMaiNTAINER comtoper@163.comARG RUNTIME_IMAGEFROM  ${RUNTIME_IMAGE}# 把第一个 FROM 的镜像中的文件,拷贝到 第二个FROM 的镜像中COPY --from=stage-temp /opt/app-root/app.jar /usr/local/s2i/app-root/COPY --from=stage-temp /usr/local/s2i/run /usr/local/s2i/WORKDIR /usr/local/s2iCMD ["/usr/local/s2i/run"]# docker build --build-arg TMP_IMAGE="xxx:latest" --build-arg RUNTIME_IMAGE="xxx/java-8-runtime:latest" -t newImageName:0.0.1 .

来源地址:https://blog.csdn.net/quyingzhe0217/article/details/129319294

--结束END--

本文标题: Dockerfile多个from的使用及多个build-arg的使用示例

本文链接: https://lsjlt.com/news/374548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作