728x90
기본적인 문법
FROM [--platform=<platform>] <image> [AS <name>]
또는
FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
또는
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
FROM 명령어
는 새로운 빌드 stage를 초기화
하고 뒤이어 나오는 명령어들에 대해 Base Image를 설정
한다.
제대로 된 Dockerfile
은 반드시 FROM 명령어
부터 시작해야 한다. 공식적으로 배포되는 이미지를 pull하면서 시작해야 편하다.
FROM 명령어에서 사용하는 변수들
ARG
: Dockerfile에서 FROM보다 앞에 위치하는 유일한 명령어다. 관련 내용은 잠시 후에 살펴본다.- 'FROM' : 하나의 Dockerfile에 여러 번 FROM 명렁어를 사용할 수 있다. 그러면 여러 개의 이미지를 만들 수 있고 하나의 build stage에 이미지들끼리 의존 관계를 부여 할 수도 있다. (각각의 명령어는 이전 명령이 실행되고 나서 실행되기 때문에 이전 FROM을 통해 가져온 이미지와 그 뒤에 나올 이미지는 서로 의존 관계에 있다고 얘기할 수 있다)
- AS
<name>
: FROM 명령 자체에 별명을 붙여줄 수 있다. 당연히 이렇게 이름을 붙이고 나면 뒤에 나오는 FROM 명령어에서 해당 이름을 사용할 수 있다. (option) - tag 또는 digest : 이 값들을 생략하면 tag값에는 기본적으로 latest가 부여된다. (option)
--platform
: FROM이 멀티 플랫폼 이미지를 참조하는 경우 이미지의 플랫폼을 해당 flag를 통해 지정할 수 있다. (ex. linux/amd64, linux/arm64, windows/amd64) 기본적으로는 build request의 target platform을 사용한다.
ARG와 FROM
FROM 명령어
는 맨 앞에 있는 FROM 이전에 위치한 ARG 명령
이 선언한 변수를 지원한다.
ARG CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD /code/run-app
FROM extras:${CODE_VERSION}
CMD /code/run-extras
FROM 이전에 선언된 ARG 명령어
는 build stage에 속하지 않기 때문에 FROM 이후에 나오는 모든 명령에서는 ARG를 사용할 수 없다.FROM 이전에 선언된 ARG의 기본값
을 사용하려면 빌드 stage 내에서 값을 지정하지 않은 ARG 명령을 사용해야 한다.
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version # build stage 밖에서 선언한 ARG 변수값
'Docker' 카테고리의 다른 글
[Docker] Docker References - CMD (0) | 2023.09.15 |
---|---|
[Docker] Docker References - RUN (0) | 2023.09.13 |
[Docker] Dockerfile References - .dockerignore file (0) | 2023.08.23 |
[Docker] Dockerfile reference - Environment Replacement (0) | 2023.08.23 |
[Docker] Dockerfile reference - Format, Parser Directives (0) | 2023.08.21 |