我有一个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中,仅静态ENV
Dockerfile指令可用。
因此,一种解决方案是从模板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] 删除。
我来说两句