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.
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.
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!