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 중국어 웹사이트의 기타 관련 기사를 참조하세요!