필요한 패키지 및 파일만 추가
컨테이너 레이어 수 줄이기
- dockerfile 의 RUN 명령어를 줄임으로써 레이어 수를 줄일 수 있음
경량 베이스 이미지 선택
- debian slim, alpine, stretch 등

멀티 스테이지 빌드 사용
# syntax=docker/dockerfile:1
FROM golang:1.16 AS builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go ./
RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o app .
FROM alpine:latest AS alpine
RUN apk --no-cache add ca-certificates
WORKDIR /root/
**COPY --from=builder** /go/src/github.com/alexellis/href-counter/app ./
CMD ["./app"]
- builder 블록과 alpine 블록이 존재, alpine 블록 COPY 문에서 —from=builder 로 builder 스테이지의 파일을 현재 스테이지로 복사
- 빌드용 이미지와, 실행용 이미지는 분리
- 실행용 이미지의 용량이 적은 베이스 이미지를 선택함으로써 컨테니어 경량화 가능