Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengasingkan Pemasangan Ketergantungan Modul Go daripada Proses Binaan untuk Binaan Docker yang Lebih Pantas?

Bagaimanakah Saya Boleh Mengasingkan Pemasangan Ketergantungan Modul Go daripada Proses Binaan untuk Binaan Docker yang Lebih Pantas?

Susan Sarandon
Lepaskan: 2024-12-20 18:26:11
asal
822 orang telah melayarinya

How Can I Separate Go Module Dependency Installation from the Build Process for Faster Docker Builds?

Memisahkan Pemasangan Ketergantungan daripada Membina dalam Modul Go

Go 1.11 memperkenalkan sokongan modul, yang mengautomasikan pemasangan pergantungan semasa binaan dan meminimumkan binaan semula. Walau bagaimanapun, sesetengah pembangun lebih suka mengambil kebergantungan secara manual dalam peringkat berasingan untuk memanfaatkan caching kontena dan mengoptimumkan kelajuan bina semula.

vgo Solution

Dalam versi Go yang terdahulu, terdapat tiada cara asli untuk mengambil kebergantungan secara manual. Walau bagaimanapun, isu #26610 pada repositori Go menangani ciri ini:

muat turun mod go

Arahan ini membolehkan anda mengambil kebergantungan secara manual tanpa menjalankan proses binaan. Untuk menggunakan arahan ini, anda hanya memerlukan fail go.mod dan go.sum dalam direktori projek anda.

Pelaksanaan Docker

Berikut ialah contoh skrip binaan Docker yang melaksanakan binaan berbilang peringkat cache dan menggunakan muat turun mod go:

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"]
Salin selepas log masuk

Dengan melaksanakan pemisahan ini kebergantungan dan peringkat binaan, anda boleh memanfaatkan caching kontena untuk pemasangan kebergantungan dan meminimumkan masa binaan seterusnya.

Pertimbangan Alternatif

Selain pendekatan muat turun mod go, artikel "Containerize Your Go Developer Environment – ​​Part 2" meneroka teknik lain untuk mengoptimumkan kelajuan binaan: memanfaatkan cache pengkompil Go. Meneroka kedua-dua pilihan boleh membantu anda memilih strategi terbaik untuk projek dan persekitaran khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengasingkan Pemasangan Ketergantungan Modul Go daripada Proses Binaan untuk Binaan Docker yang Lebih Pantas?. 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