如何在docker build中提供和使用命令行参数?

普里扬卡·帕蒂尔

我有一个Dockerfile,如下所示:

FROM centos:centos6
MAINTAINER tapash

######  Helpful utils
RUN yum -y install sudo
RUN yum -y install curl
RUN yum -y install unzip

#########Copy hibernate.cfg.xml to Client

ADD ${hibernate_path}/hibernate.cfg.xml /usr/share/tomcat7/webapps/roc_client/WEB-INF/classes/

我需要在$ hibernate_path指定的docker构建期间传递一个命令行参数。

我该怎么做呢?

如果这纯粹是一个构建时变量,则可以使用--build-arg option of docker build

此标志允许您传递RUN在Dockerfile指令中像常规环境变量一样被访问的构建时变量同样,这些值不会像中间值那样保留在中间或最终图像中ENV

docker build --build-arg hibernate_path=/a/path/to/hibernate -t tag .

在1.7中,仅静态ENVDockerfile指令可用。
因此,一种解决方案是从模板Dockerfile.tpl生成所需的Dockerfile。

Dockerfile.tpl:

...
ENV hibernate_path=xxx
ADD xxx/hibernate.cfg.xml /usr/share/tomcat7/webapps/roc_client/WEB-INF/classes/
...

每当您要构建映像时,都会首先生成Dockerfile:

sed "s,xxx,${hibernate_path},g" Dockerfile.tpl > Dockerfile

然后,您可以正常构建: docker build -t myimage .

然后,您将受益于(在Docker 1.7中):

  • 建立时环境替代
  • 运行时环境变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用命令行中的参数运行Java方法?

如何在Angularjs量角器中使用命令行参数?

如何使用命令行参数执行jar

如何对使用命令行参数的工具进行单元测试

如何在Clojure中使用命令行参数?

如何在Windows上为Javac使用命令行参数文件?

如何使用命令行参数读取多个文件并使用pandas保存单个输出

如何在任务中使用命令行参数退出应用程序

如何在JMeter中使用命令行参数

使用“ gcloud run deploy”时,如何使用命令行参数指定服务名称?

如何建立符号链接以使用命令行参数运行程序?

如何在Mac OS中使用命令行参数运行应用程序

如何使用“开始”命令在Windows“ cmd”上使用命令行参数启动程序?

如何使用命令行更改亮度和颜色?

如何在Java程序中使用命令行?

如何在Windows 7中使用命令行工具从HOSTS文件中提取条目?

如何在c(OS:Windows)中使用命令行参数?

如何使用命令行参数来rar / unrar

如何使用命令行从网络驱动器中提取文件名

如何使用命令行参数编译ReactJS以在服务器上使用?

如何在变量中转义特殊字符以在bash中提供命令行参数

如何使用perl使用命令行参数从目录中获取文件?

如何使用 pytest 在装饰器中提供命令行参数?

如何使用命令行参数删除文件和目录

如何在python数据帧中使用命令行参数?

Vowpal Wabbit:拆分训练和测试文件时如何使用命令行参数

如何使用 nix build 引用命令行参数?

如何使用命令行从 gcp pubsub 中提取数据?

如何使用命令行从 gcp pubsub 中提取数据?