Dalam catatan blog ini, kami akan meneroka Docker dan meneruskan proses mencipta binaan Docker berbilang peringkat dengan aplikasi Nginx yang ringkas. Jika anda baru bermula dengan Docker, jangan risau, saya akan memecahkan segala-galanya langkah demi langkah supaya anda boleh mengikutinya!
Berikut ialah Dockerfile yang akan kami usahakan:
FROM node:18-alpine AS installer WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:latest AS deployer COPY --from=installer /app/build /usr/share/nginx/html
Sekarang, mari kita bongkar apa yang berlaku dalam Fail Docker ini, langkah demi langkah:
Barisan ini menarik imej Node.js rasmi (versi 18 pada Alpine Linux) daripada Docker Hub. Fikirkan Docker Hub sebagai perpustakaan imej. Dengan menggunakan baris ini, kami menyatakan bahawa kami ingin menggunakan Node.js sebagai imej asas kami untuk peringkat pertama binaan kami.
Arahan ini menetapkan direktori kerja di dalam bekas kepada /app. Anda boleh menganggap ini sebagai mencipta folder khusus untuk aplikasi anda dalam bekas, sama seperti cara anda boleh menyusun fail pada desktop anda.
Di sini, kami menyalin fail package.json dan package-lock.json daripada direktori tempatan kami ke direktori kerja bekas. Fail ini mengandungi maklumat tentang kebergantungan yang diperlukan oleh aplikasi kami.
Arahan ini menjalankan pemasangan npm, yang memasang semua kebergantungan yang dinyatakan dalam package.json.
Barisan ini menyalin seluruh fail aplikasi kami ke dalam bekas. Ia membawa segala-galanya daripada direktori tempatan kami ke dalam direktori /app di dalam bekas.
Kini kami menyusun aplikasi kami menggunakan arahan npm run build. Langkah ini biasanya mengubah kod kami (selalunya React, dalam kes ini) menjadi himpunan statik, sedia untuk disampaikan kepada pengguna. Output arahan ini akan diletakkan dalam direktori binaan dalam /app.
Dalam baris ini, kami bertukar kepada imej asas baharu: Nginx. Nginx ialah pelayan web berkuasa yang boleh menyediakan fail statik, seperti yang baru kami bina. Ini adalah permulaan peringkat kedua kami dalam proses binaan berbilang peringkat.
Di sini, kami menyalin fail aplikasi yang dibina dari peringkat sebelumnya (pemasang) ke dalam direktori perkhidmatan Nginx. Bendera --from=installer memberitahu Docker untuk mengambil fail dari peringkat pemasang yang baru kami tentukan.
Setelah Fail Docker anda disediakan, anda boleh membina dan menjalankan bekas Docker anda dengan arahan berikut:
FROM node:18-alpine AS installer WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:latest AS deployer COPY --from=installer /app/build /usr/share/nginx/html
Pastikan untuk menggantikan nama-apl anda dengan nama pilihan anda. Bendera -dp akan menanggalkan bekas anda dan memetakan port 3000 pada mesin hos anda kepada port 80 dalam bekas, membolehkan anda mengakses apl anda di http://localhost:3000.
Dan begitulah! Anda baru sahaja mencipta binaan Docker berbilang peringkat yang membawa aplikasi anda daripada pembangunan kepada pengeluaran menggunakan Nginx. Jika anda mempunyai sebarang soalan atau pendapat tentang proses tersebut, sila tinggalkan komen di bawah!
Satu gotcha biasa apabila bekerja dengan persediaan ini ialah terlupa untuk memetakan nombor port yang betul. Nginx biasanya mendengar pada port 80 di dalam bekas, tetapi jika anda cuba mengakses aplikasi pada mesin tempatan anda, anda perlu memajukan port yang betul dari bekas ke mesin anda. Contohnya, jika anda ingin mengakses apl pada localhost:3000, anda perlu menjalankan bekas dengan bendera -p 3000:80 untuk memetakan port 3000 pada mesin anda kepada port 80 dalam bekas.
Terlepas langkah ini dan anda akan mendapati diri anda tertanya-tanya mengapa semuanya dibina dengan sempurna tetapi anda tidak dapat mencapai apl dalam penyemak imbas anda!
@piyushsachdeva
Video hari ke-3
Atas ialah kandungan terperinci Hari Kursus Penuh CKA ulti Stage Docker Build. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!