다단계 도커 파일의 공유 변수: 대체되지 않은 FROM 이전 ARG
Darshan 유틸리티를 위한 다단계 Docker 파일을 작성하고 있습니다.
ARG DARSHAN_VER=3.1.6
FROM fedora:29 as build
RUN dnf install -y \
gcc \
make \
bzip2 bzip2-devel zlib zlib-devel
RUN curl -O "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-${DARSHAN_VER}.tar.gz" \
&& tar ...
FROM fedora:29
COPY --from=build "/usr/local/darshan-${DARSHAN_VER}" "/usr/local/darshan-${DARSHAN_VER}"
...
나는 그것을 짓습니다.docker build -t darshan-util:3.6.1 .제가 받는 오류는 다음과 같습니다.
Step 5/10 : RUN curl -O "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-${DARSHAN_VER}.tar.gz" && tar ...
---> Running in 9943cce1669c
% Total % Received % Xferd Average Speed Time Time Time Current
...
curl: (78) RETR response: 550
The command '/bin/sh -c curl -O "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-${DARSHAN_VER}.tar.gz" && tar ...' returned a non-zero code: 78
기본 빌드 변수를 한 번만 정의할 수 있도록 두 단계에서 동일한 ARG를 재사용하고 싶습니다.두 단계 모두 ARG를 복제하면 두 FROM 바로 아래에 올바르게 구축됩니다.
기본값으로 "글로벌" 다단계 ARG 변수를 정의하는 올바른 방법은 무엇입니까?
ARG는 단일 이미지의 빌드 단계에서만 지속됩니다.다단계의 경우 다음과 같이 간단하게 ARG를 갱신합니다.
ARG DARSHAN_VER
당신의 지시에 따라서요.
cf. https://docs.docker.com/engine/reference/builder/ #
ARG DARSHAN_VER=3.1.6
FROM fedora:29 as build
ARG DARSHAN_VER
RUN dnf install -y \
gcc \
make \
bzip2 bzip2-devel zlib zlib-devel
RUN curl -O "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-${DARSHAN_VER}.tar.gz" \
&& tar ...
FROM fedora:29
ARG DARSHAN_VER
COPY --from=build "/usr/local/darshan-${DARSHAN_VER}" "/usr/local/darshan-${DARSHAN_VER}"
...
당신은 제가 어떻게 대본의 맨 위에 초기값을 선언했는지를 알아차리고, 각각의 이미지에 그것을 끌어당길 것입니다.
다음은 설명서에서 인용한 내용입니다.
ARG 명령어는 정의된 빌드 단계가 끝날 때 범위를 벗어납니다.여러 단계에서 arg를 사용하려면 각 단계에 ARG 명령이 포함되어야 합니다.
https://docs.docker.com/engine/reference/builder/ #범위
FROM 이전에 선언된 ARG는 빌드 단계를 벗어나므로 FROM 이후의 어떤 명령에서도 사용할 수 없습니다.첫 번째 FROM 이전에 선언된 ARG의 기본값을 사용하려면 빌드 단계 내부에 값이 없는 ARG 명령을 사용합니다.
https://docs.docker.com/engine/reference/builder/ #이해방법-arg 등
언급URL : https://stackoverflow.com/questions/53681522/share-variable-in-multi-stage-dockerfile-arg-before-from-not-substituted
'programing' 카테고리의 다른 글
| 메뉴 트리의 일부를 표시하는 방법? (0) | 2023.10.28 |
|---|---|
| 구조 정렬 C/C++ (0) | 2023.10.28 |
| 순서 없는 목록 항목에서 들여쓰기를 제거하는 방법은 무엇입니까? (0) | 2023.10.28 |
| ASP에서 사용자 목록을 가져오는 방법NET 아이덴티티? (0) | 2023.10.28 |
| Oracle 데이터베이스의 다른 스키마에 있는 테이블 이름 목록 가져오기 (0) | 2023.10.28 |