主要观点:
- 学习了 Dockerfile 定义中
build arguments
(构建参数)的微妙之处,特别是ARG
指令与FROM
指令的关系。 - 曾花费时间理解自定义构建的 CAP Node.js 容器镜像为何不是指定版本,发现
ARG
值为空的问题。 - 解释了
ARG
与FROM
之间微妙的关系,即ARG
在FROM
之前声明则在构建阶段之外,不能在FROM
之后的指令中使用。 - 给出解决方案,将
ARG
指令调整位置,使其在FROM
之后能正常使用,且可在命令行设置构建参数。
关键信息:
- 展示了一个简化的 Dockerfile 示例,包含
ARG
和FROM
指令及相关操作。 - 强调了
ARG
值为空以及在不同位置使用ARG
的情况。 - 提到在 HN 上引发了有趣的讨论。
重要细节:
- Dockerfile 中
ARG DEBVER="10"
和ARG CAPVER="7.8"
用于指定基础镜像版本和要安装的 CAP 版本。 FROM debian:${DEBVER}
根据DEBVER
的值选择基础镜像。- 构建镜像时,未指定
--build-arg
时,默认DEBVER
为 10,CAPVER
为空。 - 调整
ARG
指令位置后,ARG
值在FROM
之后可用,且可通过命令行设置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。