Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas
Kuasai Dockerfile berbilang peringkat untuk menyusun atau menggabungkan aplikasi anda dalam peringkat binaan dan menyalin hanya artifak ke dalam imej masa jalan yang kecil.
Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas ialah pelajaran Docker dan Kubernetes untuk Pembangun percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Docker dan Kubernetes untuk Pembangun, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Docker dan Kubernetes untuk Pembangun merangkumi sejumlah 4 pelajaran.
Masalah Imej Terlalu Besar
Binaan satu peringkat sering memasukkan pengkompil, kebergantungan pembangunan dan kod sumber ke dalam pengeluaran. Hasilnya ialah imej yang besar, lebih lambat dimuat turun dan mempunyai permukaan serangan yang lebih luas.
Apakah Binaan Berbilang Peringkat
Binaan berbilang peringkat menggunakan beberapa pernyataan FROM dalam satu Dockerfile. Peringkat awal membina artifak; peringkat akhir yang ringan hanya menyalin perkara yang diperlukan untuk menjalankannya.
Contoh Berbilang Peringkat Go
Susun dalam imej Go, kemudian hantarkan imej akhir yang kecil dan hanya mengandungi binari tersebut.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app .
FROM alpine:3.20
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Menyalin daripada Peringkat Bernama
Baris penting ialah COPY --from=build. Ia mengambil binari app yang telah disusun daripada peringkat binaan dan meninggalkan rantai alat Go.
Contoh Berbilang Peringkat Node.js
Pasang dan bina dengan kebergantungan pembangunan, kemudian salin hanya output pengeluaran.
FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm ci --omit=dev
CMD ["node", "dist/index.js"]Memilih Asas Ringan
Peringkat akhir sepatutnya menggunakan asas minimum seperti alpine, -slim atau distroless. Asas yang lebih kecil bermakna lebih sedikit pakej dan kerentanan.
Imej Distroless
Imej distroless Google hanya mengandungi aplikasi Anda dan masa jalannya, tanpa cangkerang atau pengurus pakej. Imej ini sangat kecil dan sukar dieksploitasi secara interaktif.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Menyasarkan Peringkat Tertentu
Anda boleh membina hanya sehingga peringkat bernama dengan --target, yang berguna untuk menjalankan ujian dalam CI.
docker build --target build -t myapp:test .Menyimpan Kebergantungan dalam Cache
Salin manifes kebergantungan sebelum bahagian sumber yang lain. Dengan itu, pemasangan kebergantungan disimpan dalam cache dan hanya dijalankan semula apabila manifes berubah.
COPY package*.json ./
RUN npm ci
COPY . .Mengukur Hasil
Bandingkan saiz sebelum dan selepas. Binaan berbilang peringkat lazimnya mengecilkan imej daripada ratusan MB kepada puluhan MB.
docker images myappMenggabungkan dengan .dockerignore
Tambahkan .dockerignore supaya konteks binaan mengecualikan node_modules, .git dan rahsia, sekali gus mempercepat binaan serta mengelakkan fail bocor ke dalam imej.
node_modules
.git
*.envSemakan Pantas
Uji perkara yang telah Anda pelajari.
Imbas Kembali
Anda telah mempelajari cara membahagikan Dockerfile kepada peringkat binaan dan masa jalan, menyalin hanya artifak dengan --from, memilih asas slim atau distroless, menyasarkan peringkat dan menggabungkannya dengan .dockerignore untuk menghasilkan imej pengeluaran yang ringan.
Pelajari Docker dan Kubernetes untuk Pembangun dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas” percuma?
Ya — teks penuh “Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Docker dan Kubernetes untuk Pembangun, tingkat taraf kepada CoddyKit PRO. Kursus Docker dan Kubernetes untuk Pembangun merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas”?
Kuasai Dockerfile berbilang peringkat untuk menyusun atau menggabungkan aplikasi anda dalam peringkat binaan dan menyalin hanya artifak ke dalam imej masa jalan yang kecil. Anda berlatih Docker dan Kubernetes untuk Pembangun menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Docker dan Kubernetes untuk Pembangun?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Docker dan Kubernetes untuk Pembangun di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Docker dan Kubernetes untuk Pembangun ini?
Ya. Setiap pelajaran Docker dan Kubernetes untuk Pembangun menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengkontenakan Aplikasi Web
- Mengoptimumkan Imej Docker
- Amalan Terbaik Keselamatan dan Pengeluaran
- Binaan Berbilang Peringkat untuk Imej Pengeluaran yang Ringkas