- Dockerfile에서 multi-stage 가 무엇인지 이해한다.
multi-stage 란#
- 단일 Dockerfile에서 여러 개의 이미지를 빌드 할 수 있는 기능이다.
- Dockerfile에서 여러 개의
FROM
절을 사용하면 multi-stage가 된다.
FROM golang:1.21
WORKDIR /src
COPY <<EOF ./main.go
package main
import "fmt"
func main() {
fmt.Println("hello, world")
}
EOF
RUN go build -o /bin/hello ./main.go
FROM scratch
COPY --from=0 /bin/hello /bin/hello
CMD ["/bin/hello"]
multi-stage 장점#
- 빌드시 필요한 환경과 실행시 필요한 환경이 다를 수 있다.
- 위의 예시에서도 go를 빌드 하기위해서
FROM golang:1.21
를 사용했지만, 빌드된 파일을 실행할 때는 필요없다. - 최종적인 이미지를 용량을 줄이기 위해서 스테이지를 분리할 수 있다.
참고 자료#