首页 > 解决方案 > 带有变量的 dockerfile 复制

问题描述

是否可以使用变量作为 from 标志的参数从 dockerfile 中的另一个图像复制?

我要实现的是以下

ARG MY_VERSION
COPY --from=my-image:$MY_VERSION /src /dst

但我总是得到

从标志值 my-image 无效:$MY_VERSION:无效的参考格式

标签: dockerdockerfile

解决方案


你可以做你想做的事,但你需要有一个 FROM 语句来标识你想要复制的图像。像这样的东西

ARG MY_VERSION
FROM my-image:$MY_VERSION as source
FROM scratch as final
COPY --from=source /src /dst

替换scratch为您要用于新图像的基本图像。

这是一个例子来证明它是有效的。Dockerfile:

ARG MY_VERSION
FROM ubuntu:$MY_VERSION as source
FROM alpine:latest
COPY --from=source /etc/os-release /

构建并运行

docker build --build-arg MY_VERSION=20.04 -t test .
docker run --rm test cat /os-release

输出显示

NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
...

这表明它已将文件从 Ubuntu 20.04 映像复制到 Alpine 映像。


推荐阅读