programing

--build-arg를 사용한 여러 인수의 도커 빌드

codeshow 2023. 7. 31. 22:02
반응형

--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_delin=2" 값으로

여러 개의 주장을 어떻게 정의할 수 있는지 아십니까?

사용하다--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를 예상하는 것입니다.그래서 만약 당신이 하고 있다면.

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

그런 다음 도커 파일 안에 추가해야 합니다.

ARG number_of_replicas
ARG number_of_shards

저는 이 문제에 부딪혔기 때문에 앞으로 누군가를 도와줬으면 좋겠습니다.

빌드하는 동안 환경 변수를 사용하려는 경우.사용자 이름 및 암호 설정을 예로 들어 보겠습니다.

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

여러 개의 ARG가 필요하다는 것은 유감스러운 일이지만, 그로 인해 여러 개의 레이어가 생성되고 빌드 속도가 느려집니다. 또한 이를 궁금해하는 사람들은 현재 한 줄당 여러 개의 ARG를 설정할 방법이 없습니다.

특정 파일에서 자동으로 빌드 인수를 전달하려는 경우 다음 방법으로 전달할 수 있습니다.

docker build  $(cat .my-env-file-name | while read line; do out+="--build-arg $line"; done; echo $out; out="") .

다음을 사용하여 파일에서 빌드 인수를 전달하는 방법xargs는 다음과 같습니다.

cat .MY_ENV_FILE | xargs printf -- '--build-arg %s\n' | xargs docker build -t MY_TAG .

언급URL : https://stackoverflow.com/questions/42297387/docker-build-with-build-arg-with-multiple-arguments

반응형