Dalam persekitaran pengaturcaraan Go, alat go biasanya mengendalikan pengurusan dan pemasangan kebergantungan secara automatik. Walau bagaimanapun, untuk binaan imej Docker yang dioptimumkan, ia boleh memberi manfaat untuk memisahkan pemasangan kebergantungan sebagai peringkat yang berbeza.
Dalam Go 1.11 dan versi terdahulu, ini tidak dapat dilakukan kerana kekurangan arahan khusus. Walau bagaimanapun, pembetulan dalam isu #26610 telah memperkenalkan arahan muat turun mod go.
Untuk memanfaatkan arahan ini bagi binaan Docker yang dioptimumkan:
Berikut ialah contoh berbilang peringkat Docker bina dengan caching lapisan:
FROM golang:1.17-alpine as builder RUN apk --no-cache add ca-certificates git WORKDIR /build # Fetch dependencies COPY go.mod go.sum ./ RUN go mod download # Build COPY . ./ RUN CGO_ENABLED=0 go build # Create final image FROM alpine WORKDIR / COPY --from=builder /build/myapp . EXPOSE 8080 CMD ["/myapp"]
Memisahkan pemasangan kebergantungan membolehkan Docker memanfaatkan lapisan caching, menjadikan binaan semula lebih cekap kerana banyak perubahan kod biasanya tidak menjejaskan kebergantungan.
Selain itu, pertimbangkan untuk memanfaatkan cache pengkompil Go seperti yang diterangkan dalam artikel "Bendungkan Persekitaran Pembangun Go Anda – Bahagian 2" untuk mempercepatkan lagi masa binaan .
Atas ialah kandungan terperinci Bagaimanakah Pengambilan Ketergantungan Manual Boleh Mengoptimumkan Go Docker Builds?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!