ONBUILD为他人作嫁衣裳1_第1页
ONBUILD为他人作嫁衣裳1_第2页
ONBUILD为他人作嫁衣裳1_第3页
ONBUILD为他人作嫁衣裳1_第4页
ONBUILD为他人作嫁衣裳1_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ONBUILD为他人作嫁衣裳2目录ONBUILD命令详解使用ONBUILD3ONBUILD命令详解格式:ONBUILD<其它指令>ONBUILD是一个特殊的指令,它后面跟的是其它指令,比如RUN,COPY等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。Dockerfile中的其它指令都是为了定制当前镜像而准备的,唯有ONBUILD是为了帮助别人定制自己而准备的。4使用ONBUILD假设要制作Node.js所写的应用的镜像。我们都知道Node.js使用npm进行包管理,所有依赖、配置、启动信息等会放到package.json文件里。在拿到程序代码后,需要先进行npminstall才可以获得所有需要的依赖。然后就可以通过npmstart来启动应用。因此,一般来说会这样写Dockerfile5FROMnode:slimRUNmkdir/appWORKDIR/appCOPY./package.json/appRUN["npm","install"]COPY./app/CMD["npm","start"]使用ONBUILD6如果第一个Node.js项目在开发过程中,发现这个Dockerfile里存在问题,然后开发人员修复了这个Dockerfile,再次构建,问题解决。第一个项目没问题了,但是第二个项目呢?那么我们可不可以做一个基础镜像,然后各个项目使用这个基础镜像呢?这样基础镜像更新,各个项目不用同步Dockerfile的变化,重新构建后就继承了基础镜像的更新?使用ONBUILD7FROMnode:slimRUNmkdir/appWORKDIR/appCMD["npm","start"]使用ONBUILD8这里我们把项目相关的构建指令拿出来,放到子项目里去。假设这个基础镜像的名字为my-node的话,各个项目内的自己的Dockerfile就变为:使用ONBUILDFROMmy-nodeCOPY./package.json/appRUN["npm","install"]COPY./app/9基础镜像变化后,各个项目都用这个Dockerfile重新构建镜像,会继承基础镜像的更新。那么如果Dockerfile里面有些东西需要调整呢?比如npminstall都需要加一些参数,那怎么办?所以说,这样制作基础镜像,只解决了原来的Dockerfile的前4条指令的变化问题,而后面三条指令的变化则完全没办法处理。使用ONBUILD10用ONBUILD重新写一下基础镜像的DockerfileFROMnode:slimRUNmkdir/appWORKDIR/appONBUILDCOPY./package.json/appONBUILDRUN["npm","install"]ONBUILDCOPY./app/CMD["npm","start"]使用ONBUILD11这次我们回到原始的Dockerfile,但是这次将项目相关的指令加上ONBUILD,这样在构建基

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论