如何将参数传递给Dockerfile?

mea*_*our 104 docker dockerhub dockerfile docker-registry docker-compose

我在a中使用RUN指令Dockerfile来安装rpm

RUN yum -y install samplerpm-2.3
Run Code Online (Sandbox Code Playgroud)

但是,我想传递值"2.3"作为参数.我的RUN指令应该类似于:

RUN yum -y install samplerpm-$arg
Run Code Online (Sandbox Code Playgroud)

哪里 $arg=2.3

And*_*inn 130

您正在寻找--build-argARG指导.这些是Docker 1.9的新功能.查看https://docs.docker.com/engine/reference/builder/#arg.这将允许您添加ARG argDockerfile然后构建docker build --build-arg arg=2.3 ..

  • 环境变量是一个_运行时_变量。构建参数是一个 _build_ 时间变量。这里的区别是声明您只想用于构建映像而不希望(或不应该)存储容器运行时的变量。 (32认同)
  • 完成所有这些操作后,我收到错误**没有可用的包samplerpm-$arg。** 2.3 的参数值似乎没有被替换。 (2认同)
  • 那么env变量呢? (2认同)

cha*_*ier 5

如果 dockerfile 中有多个 FROM 语句,请确保重新声明每个变量没有值的变量,否则它们在退出块时会丢失。

这里有一篇文章对此进行了更多介绍:Why are my Docker ARGs empty?

这是一个例子:

ARG VERSION=latest
FROM ubuntu:${VERSION}

ARG VERSION
ARG FILENAME
COPY ${FILENAME} /home/ubuntu/${FILENAME}
Run Code Online (Sandbox Code Playgroud)