如何在docker build中提供和使用命令行参数?
我有一个Dockerfile,如下所示:如何在docker build中提供和使用命令行参数?,docker,dockerfile,Docker,Dockerfile,我有一个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/
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/
我需要在docker构建期间为$hibernate_路径指定一个要传递的命令行参数
如何执行此操作?创建一个脚本,将所需的值放入docker文件并启动
docker build-t mytag。
如果这纯粹是一个构建时变量,可以使用
此标志允许您传递构建时变量,这些变量与Dockerfile的RUN
指令中的常规环境变量类似。此外,这些值不会像ENV
值一样保留在中间或最终图像中
在1.7中,只有静态可用。
因此,一种解决方案是从模板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中):
- 构建时环境替换
- 运行时环境变量
sed "s,xxx,${hibernate_path},g" Dockerfile.tpl > Dockerfile