docker build with --build-arg с несколькими аргументами


по словам документация, можно определить несколько аргументов за флаг --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"

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

3 75

3 ответа:

использовать --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 .

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

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

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

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