docker build with - build-arg ile birden fazla argüman


193

Belgelere göre , bayrak için birden çok argüman tanımlamak mümkündür --build-arg, ancak nasıl olduğunu bulamıyorum. Aşağıdakileri denedim:

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

=> Bu bir hata döndürür.

Ayrıca denedim:

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

=> Bu, bir değişkeni, number_of_shards"5, number_of_replicas = 2" değerine ayarlar

Birden fazla argümanı nasıl tanımlayabileceğim hakkında bir fikrin var mı?

Yanıtlar:


358

--build-argHer bir argümanla birlikte kullanın .

İki bağımsız --build-argdeğişken geçiyorsanız, aşağıdaki gibi bağımsız değişkenlerle ekleyin :

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

63
Netleştirdiğiniz için teşekkürler. --helpBu konuda özellikle yanıltıcıdır: --build-arg list. Bu bir liste değil!
cowlinator

91

Pl_rock tarafından yukarıdaki cevap doğrudur, ekleyeceğim tek şey, eğer erişiminiz olmazsa, ARG'yi Dockerfile içinde beklemektir. Yani eğer yapıyorsan

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

Sonra Dockerfile içine eklemek gerekir

ARG number_of_replicas
ARG number_of_shards

Bu sorunla karşılaşıyordum, umarım gelecekte birisine (kendim) yardım ederim.


6
bana da yardım ettin, çok teşekkürler. Sadece şunu ARGSilan edeyimFROM
Edoardo

6
Vay canına teşekkürler! Kullanılması ARGbile söz edilmeyen docs.docker.com/engine/reference/commandline/build/... ve --build-argolmadan benim için yararsız olduARG
HeyWatchThis

19

Oluşturma sırasında ortam değişkenini kullanmak istiyorsanız. Kullanıcı adı ve şifre belirleme diyelim.

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

Terminal Komutu

docker build --build-arg SMB_PASS=swed24sw --build-arg SMB_USER=Ubuntu . -t IMAGE_TAG


3
Bunun docker historykomutu kullanarak gizli değerlerin docker görüntüsünde görünür kalmasına dikkat edin .
Gary

bazen en iyi cevap iptal edilir! ama bunu çok iyi açıkladın. Teşekkür ederim!
Dupinder Singh

14

Birden fazla ARG'ye de ihtiyacımız olduğu için bir utanç, birden fazla katmanla sonuçlanır ve bu nedenle yapıyı yavaşlatır ve ayrıca merak eden herkes için şu anda birden fazla ARG ayarlamanın bir yolu yoktur .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.