Подтвердить что ты не робот

Сборка докеров с помощью --build-arg с несколькими аргументами

Согласно документации на http://docs-stage.docker.com/v1.10/engine/reference/commandline/build/, можно определить несколько аргументов для флага --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 .

= > Это устанавливает одну переменную, number_of_shards, в значение "5, number_of_replicas = 2"

Любая идея, как я могу определить несколько аргументов?

4b9b3361

Ответ 1

Используйте --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 .

Ответ 2

Вышеприведенный ответ pl_rock верен, единственное, что я хотел бы добавить, - это ожидать ARG внутри файла Docker, если у вас не будет доступа к нему. Итак, если вы делаете

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

Я столкнулся с этой проблемой, поэтому надеюсь, что помогу кому-то (мне) в будущем.

Ответ 3

Поразительно, что нам также нужно несколько ARG, это приводит к нескольким слоям и замедляет сборку из-за этого, а также для кого-то также интересно, что в настоящее время нет способа установить несколько ARG.