Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ## Bagaimanakah Saya Boleh Pra-Membina Ketergantungan dalam Fail Docker Saya untuk Pembinaan Imej yang Lebih Pantas?

## Bagaimanakah Saya Boleh Pra-Membina Ketergantungan dalam Fail Docker Saya untuk Pembinaan Imej yang Lebih Pantas?

Susan Sarandon
Susan Sarandonasal
2024-10-31 12:30:31239semak imbas

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

Kebergantungan Pra-Pembinaan untuk Pembinaan Imej Docker yang Lebih Pantas

Apabila membina imej Docker, kebergantungan caching boleh mengurangkan masa binaan dengan ketara. Walau bagaimanapun, proses pembinaan awal untuk kebergantungan ini boleh memakan masa. Untuk menyelaraskan proses ini, pembangun sering mencari cara untuk pra-bina semua kebergantungan yang ditakrifkan dalam fail go.mod.

Penyelesaian

Docker menawarkan kaedah yang berkesan untuk mencapai pengoptimuman pra-bina ini. Dengan menstrukturkan Fail Docker anda seperti yang disyorkan di bawah, anda boleh mendapat manfaat daripada mekanisme caching yang mempercepatkan binaan seterusnya dengan ketara:

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 /

Fail Docker ini memanfaatkan lekapan cache pada lokasi lalai untuk cache binaan pergi, /root/. cache/go-build. Semasa binaan awal, cache ini akan diisi. Binaan seterusnya akan menggunakan semula fail yang dicache, menghapuskan keperluan untuk membina semula pergantungan yang panjang.

Pengaktifan dan Pengesahan

Untuk mengaktifkan pengoptimuman ini, anda mesti mendayakan Docker BuildKit dengan menetapkan DOCKER_BUILDKIT=1 dalam arahan binaan anda . Sebagai alternatif, anda boleh menggunakan utiliti docker buildx.

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

Mengesahkan keberkesanan pengoptimuman ini melibatkan pemeriksaan sama ada direktori cache go-build diisi sebelum melaksanakan go build dalam binaan seterusnya. Ujian telah mengesahkan kefungsian yang dimaksudkan bagi pendekatan pra-pembinaan ini.

Atas ialah kandungan terperinci ## Bagaimanakah Saya Boleh Pra-Membina Ketergantungan dalam Fail Docker Saya untuk Pembinaan Imej yang Lebih Pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn