여러 인수를 가진 --build-arg로 docker build


193

문서 에 따르면 플래그에 대해 여러 개의 인수를 정의 할 --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"값으로 설정합니다

여러 인수를 어떻게 정의 할 수 있습니까?

답변:


358

--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 .

63
이것을 정리해 주셔서 감사합니다. --help이에 특히 오해의 소지가된다 --build-arg list. 목록이 아닙니다!
cowlinator

91

pl_rock의 위의 대답은 정확합니다. 추가 할 유일한 것은 Dockerfile에 ARG가 없을 경우 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

나는이 문제에 부딪 쳤으므로 앞으로 누군가 (나 자신)를 도울 수 있기를 바랍니다.


6
당신도 저를 도왔습니다. 감사합니다. 다음에 ARGS선언해야하는 내용 만 추가하겠습니다FROM
Edoardo

6
와우 감사합니다! 사용은 ARG심지어에서 언급되지 docs.docker.com/engine/reference/commandline/build/...--build-arg없이 나를 위해 쓸모가 없었습니다ARG
HeyWatchThis

19

빌드 중에 환경 변수를 사용하려는 경우 사용자 이름과 비밀번호를 설정한다고 말합니다.

username= Ubuntu
password= swed24sw

도커 파일

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 --build-arg SMB_PASS=swed24sw --build-arg SMB_USER=Ubuntu . -t IMAGE_TAG


3
docker history명령을 사용하여 도커 이미지에서 비밀 값을 볼 수 있습니다 .
Gary

때로는 유일한 최고 답변이 공표됩니다! 하지만 당신은 이것을 아주 잘 설명했습니다. 감사합니다!
Dupinder Singh

14

그것은 때문에 그 빌드 아래 여러 계층과 감속을 초래하고, 또한 궁금 누군가를 위해, 현재, 우리는 너무 여러 ARG가 필요하다고 부끄러운 방법이 없습니다 여러 인수를 설정하는가.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.