动态 Docker 基础镜像

7

我有一个Dockerfile需要从命令行获取基础镜像标签并动态加载它,但是我在使用这个命令行时遇到了这个错误。

$ docker build --network=host --build-arg sample_TAG=7.0  --rm=true .

Step 9/12 : FROM "${sample_TAG}"
base name ("${sample_TAG}") should not be blank

Dockerfile如下:
FROM maven:3.6.1-jdk-8 as maven-build

ARG sample_TAG

ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8


WORKDIR /apps/sample-google


COPY . /apps/sample-google


RUN mvn clean package



RUN echo "image tag is ${sample_TAG}"

FROM $sample_TAG


VOLUME /apps

RUN mkdir /apps/sample-google
COPY --from=maven-build  /apps/sample-google/target /apps/sample-google

回声行可以正确地打印“latest”字符串,但在“FROM $sample_TAG”行出现错误。
2个回答

8
为此,您需要定义全局ARG,并最好设置一些默认值,在构建时进行覆盖。
ARG sample_TAG=test
FROM maven:3.6.1-jdk-8 as maven-build
ARG sample_TAG
WORKDIR /apps/sample-google
RUN echo "image tag is ${sample_TAG}"
FROM $sample_TAG
VOLUME /apps
RUN mkdir /apps/sample-google

1

改为

ARG sample_TAG
FROM maven:3.6.1-jdk-8 as maven-build
...
FROM $sample_TAG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接