gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:15:16 25 4
gpt4 key购买 nike

我有一个 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/

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

我该怎么做?

最佳答案

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

This flag allows you to pass the build-time variables that are accessed like regular environment variables in the RUN instruction of the Dockerfile. Also, these values don’t persist in the intermediate or final images like ENV values do.

docker build --build-arg hibernate_path=/a/path/to/hibernate -t tag .
<小时/>

在1.7中,只有静态ENV Dockerfile directive可用。
因此,一种解决方案是从模板 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 中):

  • 构建时环境替换
  • 运行时环境变量。

关于docker - 如何在 docker build 中提供和使用命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35552791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com