>백엔드 개발 >Golang >## 더 빠른 이미지 빌드를 위해 Dockerfile에서 종속성을 사전 빌드하려면 어떻게 해야 합니까?

## 더 빠른 이미지 빌드를 위해 Dockerfile에서 종속성을 사전 빌드하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-31 12:30:31310검색

## How Can I Pre-Build Dependencies in My Dockerfile for Faster Image Builds?

더 빠른 Docker 이미지 빌드를 위한 사전 빌드 종속성

Docker 이미지를 구성할 때 종속성을 캐싱하면 빌드 시간을 크게 줄일 수 있습니다. 그러나 이러한 종속성에 대한 초기 구축 프로세스에는 시간이 많이 걸릴 수 있습니다. 이 프로세스를 간소화하기 위해 개발자는 go.mod 파일에 정의된 모든 종속성을 사전 빌드하는 방법을 찾는 경우가 많습니다.

솔루션

Docker는 이러한 사전 빌드 최적화를 달성하는 효과적인 방법을 제공합니다. 아래 권장 사항에 따라 Dockerfile을 구성하면 후속 빌드를 크게 가속화하는 캐싱 메커니즘의 이점을 누릴 수 있습니다.

FROM --platform=${BUILDPLATFORM} docker.io/golang:1.16.7-alpine AS build
ARG TARGETOS
ARG TARGETARCH
WORKDIR /src
ENV CGO_ENABLED=0
COPY go.* .
RUN go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build \
GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/example .

FROM scratch
COPY --from=build /out/example /

이 Dockerfile은 Go 빌드 캐시의 기본 위치인 /root/에 있는 캐시 마운트를 활용합니다. 캐시/고빌드. 초기 빌드 중에 이 캐시가 채워집니다. 후속 빌드에서는 캐시된 파일을 재사용하므로 시간이 오래 걸리는 종속성 재구축이 필요하지 않습니다.

활성화 및 확인

이 최적화를 활성화하려면 빌드 명령에서 DOCKER_BUILDKIT=1을 설정하여 Docker BuildKit을 활성화해야 합니다. . 또는 docker buildx 유틸리티를 사용할 수 있습니다.

DOCKER_BUILDKIT=1 docker build -t myimage .
docker buildx build -t myimage .

이 최적화의 효율성을 확인하려면 후속 빌드에서 go build를 실행하기 전에 go-build 캐시 디렉터리가 채워졌는지 확인하는 것이 포함됩니다. 테스트를 통해 이 사전 구축 접근 방식의 의도된 기능이 확인되었습니다.

위 내용은 ## 더 빠른 이미지 빌드를 위해 Dockerfile에서 종속성을 사전 빌드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.