• includestdio.h
    2023-01-11 来自陕西
    以前整理的关于 dockerfile 的最佳实践: 1. 不安装无效软件包 2. 理想状态下,每个镜像应该只有一个进程 3. 无法避免多进程运行时,应选择合理的初始化进程【1.需要捕获 SIGTERM 信号并完成子进程的优雅终止;2.负责清理退出的子进程以避免僵尸进程 --init 参数】 4. 最小层级数:1.多条 RUN 命令可通过连接符连接成一条指令集以减少层数;2.通过多段构建减少镜像层数 5. 多行参数按字母排序,可以减少可能出现的重复参数,并且提供可读性 6. 把变更频率低的编译指令放在镜像底层,有效利用 build cache【考虑 build cache 下层失效,上层同步失效的机制】 7. 复制文件时,每个文件应独立复制,确保某个文件变更时,只影响该文件对应的缓存

    作者回复: 很棒的总结👍🏻,例如提到的多阶段构建和复制文件都是在实际使用场景用的很多的。

    
    7
  • jeffery
    2023-01-11 来自陕西
    优化镜像大小 FROM 适合业务基础镜像 减少镜像层 清理无用数据 使用.dockerignore忽略构建镜像时非必需的文件 多阶段构建

    作者回复: 👍🏻很完整的总结~

    
    2
  • Jich
    2023-01-13 来自上海
    老师,有一个问题,多阶段构建,在对应多环境的话,是不是会存在发布效率上的问题。我们现在是在DEV环境编译完之后,直接可以用这个镜像发布test或生产。如果使用多阶段构建的话,是不是意味着我在每个环境都会要执行编译的阶段。

    作者回复: 使用多阶段构建不影响原有的镜像发布过程,只是可以帮助你减小镜像大小,构建完成之后仍然走老的流程。

    
    1
  • Geek_d3ac4e
    2023-08-13 来自广东
    rust怎么和Python一起变解释型语言了

    作者回复: 抱歉,笔误,稍后修正。

    
    
  • Geek_c680d7
    2023-06-08 来自美国
    老师,有一个问题,现在jdk17的基础镜像太大了,也不提供jre镜像,需要自己导出jre镜像,但是怎么在导出的jre镜像中使用jmap、jstack等命令呢?

    作者回复: 可以制作一个基于 jre 镜像的 dockerfile,并安装这些工具重新打包镜像即可。

    
    
  • Wisdom
    2023-01-11 来自中国香港
    总结的挺好的,不难理解。老师可以出品快一点吗? :)

    作者回复: 感谢你的认可,固定每周一三五更新,敬请期待~

    
    
  • 一步
    2023-01-11 来自广东
    了解每一种镜像的优缺点和使用场景 才能更好的进行选择
    
    