当前位置: 首页 > news >正文

Docker 学习总结(79)—— Dockerfile 编写技巧总结

目标

  • 更快的构建速度

  • 更小的 Docker 镜像大小

  • 更少的 Docker 镜像层

  • 充分利用镜像缓存

  • 增加 Dockerfile 可读性

  • 让 Docker 容器使用起来更简单

总结

  • 编写 .dockerignore 文件

  • 容器只运行单个应用

  • 将多个 RUN 指令合并为一个

  • 基础镜像的标签不要用 latest

  • 每个 RUN 指令后删除多余文件

  • 选择合适的基础镜像(alpine 版本最好)

  • 设置 WORKDIR 和 CMD

  • 使用 ENTRYPOINT  (可选)

  • 在 entrypoint 脚本中使用 exec

  • COPY 与 ADD 优先使用前者

  • 合理调整 COPY 与 RUN 的顺序

  • 设置默认的环境变量,映射端口和数据卷

  • 使用 LABEL 设置镜像元数据

  • 添加 HEALTHCHECK

  • 多阶段构建

示例

示例 Dockerfile 犯了几乎所有的错(当然我是故意的)。接下来,我会一步步优化它。假设我们需要使用 Docker 运行一个 Node.js 应用,下面就是它的 Dockerfile(CMD 指令太复杂了,所以我简化了,它是错误的,仅供参考)。

<
http://www.lryc.cn/news/180216.html

相关文章:

  • 链表经典面试题(二)
  • 89、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->Zset 相关命令
  • 知识图谱02——使用python将信息录入neo4j
  • greenDAO-Android轻量级快速ORM框架
  • 结构型设计模式——组合模式
  • 40. 组合总和 II
  • 安卓玩机-----给app加注册码 app加弹窗 云注入弹窗
  • NLP的不同研究领域和最新发展的概述
  • 1.物联网射频识别,RFID概念、组成、中间件、标准,全球物品编码——EPC码
  • MySQL函数与控制结构
  • 【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式
  • 如何在 Elasticsearch 中使用 Openai Embedding 进行语义搜索
  • 世界第一ERP厂商SAP,推出类ChatGPT产品—Joule
  • 嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理③
  • 【Python】返回指定时间对应的时间戳
  • 微服务moleculer03
  • [React] react-router-dom的v5和v6
  • Linux命令(91)之mv
  • C++ 强制类型转换(int double)、查看数据类型、自动决定类型、三元表达式、取反、
  • Android自动化测试之MonkeyRunner--从环境构建、参数讲解、脚本制作到实战技巧
  • Neural Insights for Digital Marketing Content Design 阅读笔记
  • BI神器Power Query(26)-- 使用PQ实现表格多列转换(2/3)
  • 中间件中使用到的设计模式
  • 运用动态内存实现通讯录(增删查改+排序)
  • 基于Cplex的人员排班问题建模求解(JavaAPI)
  • 理解Go中的数据类型
  • 【人工智能导论】线性回归模型
  • 十大常见排序算法详解(附Java代码实现和代码解析)
  • 在Ubuntu上通过Portainer部署微服务项目
  • 软件测试基础学习