使用 --build-arg 修改 Docker 图像中的 FROM 子句
Using --build-arg to modify FROM clause in Docker image
假设我们有一个像这样的 Dockerfile:
FROM node:9
我们使用以下方法构建它:
docker build -t foo .
我的问题是 - 有没有办法使用 --build-arg
更改 FROM 子句,如下所示:
ARG NODE_VERSION
FROM node:$NODE_VERSION
以及构建:
docker build -t foo --build-arg NODE_VERSION="8" .
它的工作原理与您提议的完全一样。给定以下 Dockerfile:
ARG base_image=alpine
FROM $base_image
我可以这样构建它并获得一个基于 Alpine 的图像:
docker build -t test1 .
或者像这样获取基于 Fedora 的镜像:
docker build -t test2 --build-arg base_image=fedora .
正如您所说,更改基本图像会使缓存失效。
假设我们有一个像这样的 Dockerfile:
FROM node:9
我们使用以下方法构建它:
docker build -t foo .
我的问题是 - 有没有办法使用 --build-arg
更改 FROM 子句,如下所示:
ARG NODE_VERSION
FROM node:$NODE_VERSION
以及构建:
docker build -t foo --build-arg NODE_VERSION="8" .
它的工作原理与您提议的完全一样。给定以下 Dockerfile:
ARG base_image=alpine
FROM $base_image
我可以这样构建它并获得一个基于 Alpine 的图像:
docker build -t test1 .
或者像这样获取基于 Fedora 的镜像:
docker build -t test2 --build-arg base_image=fedora .
正如您所说,更改基本图像会使缓存失效。