Bagaimanakah saya boleh mengurangkan masa binaan imej Docker dengan ketara dengan pra-membina dan menyimpan modul Go?

Mary-Kate Olsen
Lepaskan: 2024-10-27 06:38:02
asal
721 orang telah melayarinya

How can I significantly reduce Docker image build times by pre-building and caching Go modules?

Modul Pra-Pembinaan dan Caching untuk Bangunan Imej Swift Docker

Apabila membuat imej Docker, adalah penting untuk mengoptimumkan proses binaan untuk meminimumkan masa yang dibelanjakan untuk membina kebergantungan. Walaupun Docker membenarkan lapisan kebergantungan caching, binaan kebergantungan awal kekal sebagai tugas yang memakan masa. Untuk mengelakkan perkara ini, kami menyelidiki pra-pembinaan dan caching semua modul yang diperlukan yang disenaraikan dalam go.mod.

Pra-Membina Semua Modul Go

Arahan go menyediakan mekanisme khusus untuk pra-membina modul Go. Mari terokai cara ia berfungsi:

go build -i github.com/mattn/go-sqlite3
Salin selepas log masuk

Arahan ini mengarahkan Go untuk membina modul go-sqlite3, termasuk kebergantungan transitifnya. Ia menyimpan artifak terbina dalam cache modul, yang terletak di $GOPATH/pkg/mod/cache/download.

Menggunakan pendekatan ini, anda boleh pra-membina semua modul yang disenaraikan dalam go.mod dengan mengulanginya dan mengeluarkan arahan go build -i untuk setiap satu.

Caching Modul Pra-Built in Docker

Untuk menggunakan modul pra-bina dalam binaan imej Docker anda, kami mengeksploitasi Mekanisme pelekap Docker untuk berkongsi cache modul antara persekitaran binaan dan masa jalan bekas.

Pertimbangkan struktur Dockerfile berikut:

FROM docker.io/golang:1.16.7-alpine AS build
WORKDIR /src
COPY go.* .
RUN go mod download

# Mount the module cache from the host to the container
RUN --mount=type=bind,source=$GOPATH/pkg/mod/cache/download,target=/root/.cache/go-build \
go build -o /out/example .

FROM scratch
COPY --from=build /out/example /
Salin selepas log masuk

Argumen --mount memasang cache modul hos ke dalam persekitaran bekas di /root/.cache/go-build. Ini memastikan modul pra-bina tersedia semasa pembinaan imej.

Bina Pengoptimuman dengan DOCKER_BUILDKIT

Untuk memanfaatkan fungsi cache, pastikan anda menggunakan DOCKER_BUILDKIT=1 semasa binaan imej:

DOCKER_BUILDKIT=1 docker build -t myimage .
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan docker buildx:

docker buildx build -t myimage .
Salin selepas log masuk

Kesimpulan

Pra-pembinaan dan caching modul Go dalam Docker memanfaatkan pengoptimuman yang mengurangkan masa binaan imej dengan ketara. Dengan memahami arahan go build -i dan memanfaatkan mekanisme lekapan cache Docker, pembangun boleh meningkatkan aliran kerja pembinaan imej kontena mereka.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengurangkan masa binaan imej Docker dengan ketara dengan pra-membina dan menyimpan modul Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!