当前位置: 首页 > 知识库问答 >
问题:

使用带有多个参数的- build-arg进行docker构建

柴衡
2023-03-14

根据文档,可以为标志定义多个参数--build-arg,但我找不到具体方法。我尝试了以下方法:

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 number_of_replicas=2 --no-cache .

=

我也试过:

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5,number_of_replicas=2 --no-cache .

=

知道如何定义多个参数吗?

共有3个答案

韩季
2023-03-14

如果要在生成期间使用环境变量。比如设置用户名和密码。

username= Ubuntu
password= swed24sw

Dockerfile

FROM ubuntu:16.04
ARG SMB_PASS
ARG SMB_USER
# Creates a new User
RUN useradd -ms /bin/bash $SMB_USER
# Enters the password twice.
RUN echo "$SMB_PASS\n$SMB_PASS" | smbpasswd -a $SMB_USER

终端命令

docker构建--Build-argSMB_PASS=swd24sw--Build-argSMB_USER=Ubuntu。-tIMAGE_TAG

苏俊友
2023-03-14

pl_rock给出的上述答案是正确的,我唯一要补充的是,如果没有,您将无法访问Dockerfile中的ARG。所以如果你在做

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 --build-arg number_of_replicas=2 --no-cache .

然后在 Dockerfile 中,您应该添加

ARG number_of_replicas
ARG number_of_shards

我遇到了这个问题,所以我希望将来能帮助别人(自己)。

呼延哲
2023-03-14

对每个参数使用 --build-arg

如果要传递两个参数,则为每个参数添加 --build-arg,如下所示:

docker build \
-t essearch/ess-elasticsearch:1.7.6 \
--build-arg number_of_shards=5 \
--build-arg number_of_replicas=2 \
--no-cache .
 类似资料:
  • 问题内容: 根据文档,可以为该标志定义多个args ,但我不知道如何。我尝试了以下方法: =>这将返回错误。 我也尝试过: =>这会将一个变量设置为值“ 5,number_of_replicas = 2” 知道如何定义多个参数吗? 问题答案: 与每个参数一起使用。 如果您要传递两个参数,则在每个参数中添加:

  • ARG 构建参数 格式:ARG <参数名>[=<默认值>] 构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是,ARG 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就使用 ARG 保存密码之类的信息,因为 docker history 还是可以看到所有值的。 Dockerfile 中的 ARG 指令是定义参数名称,以及定义其默认值。该默认值可以在构建

  • 尝试按照说明从docker网站创建docker映像。 https://docs.docker.com/examples/running_redis_service/ 这是我得到的错误将遵循文档上的说明并使用此Dockerfile 如何解决?

  • 我遇到了这样一种情况,我的映射方法有3个参数,所有这三个参数都用于派生目标类型的一个属性。 我在接口中创建了一个默认映射方法,保留了用于派生属性的逻辑,现在为了调用这个方法,我可以在注释中使用。 有没有什么方法可以在mapstruct注释中做到这一点,比如,我试着用expression属性和qualifiedByName来注释注释,但它不起作用:

  • 我有一个docker-compose.yml,多个服务使用相同的Dockerfile(django、celery等)。当我使用docker-compose构建时,它会多次构建容器。 这使得我的“应用更改并重新启动”过程成本很高。有没有一种只构建一次Dockerfile的好方法?我只能构建一个容器并希望它更新所有的内容吗? 在我的例子中,我有5个Dockerfile实例,简单地使用不同的命令,不同的