在 Dockerfile 中使用 ARG - 注意陷阱

主要观点:

  • 学习了 Dockerfile 定义中build arguments(构建参数)的微妙之处,特别是ARG指令与FROM指令的关系。
  • 曾花费时间理解自定义构建的 CAP Node.js 容器镜像为何不是指定版本,发现ARG值为空的问题。
  • 解释了ARGFROM之间微妙的关系,即ARGFROM之前声明则在构建阶段之外,不能在FROM之后的指令中使用。
  • 给出解决方案,将ARG指令调整位置,使其在FROM之后能正常使用,且可在命令行设置构建参数。

关键信息:

  • 展示了一个简化的 Dockerfile 示例,包含ARGFROM指令及相关操作。
  • 强调了ARG值为空以及在不同位置使用ARG的情况。
  • 提到在 HN 上引发了有趣的讨论。

重要细节:

  • Dockerfile 中ARG DEBVER="10"ARG CAPVER="7.8"用于指定基础镜像版本和要安装的 CAP 版本。
  • FROM debian:${DEBVER}根据DEBVER的值选择基础镜像。
  • 构建镜像时,未指定--build-arg时,默认DEBVER为 10,CAPVER为空。
  • 调整ARG指令位置后,ARG值在FROM之后可用,且可通过命令行设置。
阅读 10
0 条评论