"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > CKA دورة كاملة يومية متعددة المراحل Docker Build

CKA دورة كاملة يومية متعددة المراحل Docker Build

تم النشر بتاريخ 2024-11-04
تصفح:810

CKA Full Course Day ulti Stage Docker Build

في منشور المدونة هذا، سنستكشف Docker ونتعرف على كيفية إنشاء بنية Docker متعددة المراحل باستخدام تطبيق Nginx البسيط. إذا كنت قد بدأت للتو في استخدام Docker، فلا تقلق، فسوف أقوم بتقسيم كل شيء خطوة بخطوة حتى تتمكن من المتابعة!

ملف الإرساء

إليك ملف Dockerfile الذي سنعمل معه:

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

تفريغ ملف Dockerfile

الآن، دعونا نوضح ما يحدث في ملف Dockerfile هذا، خطوة بخطوة:

1. من العقدة: 18-alpine AS installer

يسحب هذا الخط صورة Node.js الرسمية (الإصدار 18 على Alpine Linux) من Docker Hub. فكر في Docker Hub كمكتبة للصور. باستخدام هذا السطر، نحدد أننا نريد استخدام Node.js كصورة أساسية للمرحلة الأولى من البناء.

2. WORKDIR /التطبيق

يقوم هذا الأمر بتعيين دليل العمل داخل الحاوية على /app. يمكنك التفكير في هذا على أنه إنشاء مجلد مخصص لتطبيقك داخل الحاوية، على غرار الطريقة التي يمكنك بها تنظيم الملفات على سطح المكتب.

3. نسخ الحزمة*.json ./

هنا، نقوم بنسخ ملفات package.json وpackage-lock.json من دليلنا المحلي إلى دليل عمل الحاوية. تحتوي هذه الملفات على معلومات حول التبعيات التي يحتاجها تطبيقنا.

4. تشغيل تثبيت npm

يعمل هذا الأمر على تشغيل npm install، الذي يقوم بتثبيت كافة التبعيات المحددة في package.json.

5. نسخة . .

يقوم هذا السطر بنسخ بقية ملفات التطبيق الخاصة بنا إلى الحاوية. إنه يجمع كل شيء من دليلنا المحلي إلى دليل /app داخل الحاوية.

6. RUN npm run build

الآن نقوم بتجميع تطبيقنا باستخدام الأمر npm run build. عادةً ما تقوم هذه الخطوة بتحويل الكود الخاص بنا (غالبًا React، في هذه الحالة) إلى حزمة ثابتة، جاهزة لتقديمها للمستخدمين. سيتم وضع مخرجات هذا الأمر في دليل البناء داخل /app.

7. من nginx: أحدث أداة نشر AS

في هذا السطر، ننتقل إلى صورة أساسية جديدة: Nginx. Nginx هو خادم ويب قوي يمكنه خدمة الملفات الثابتة، مثل تلك التي أنشأناها للتو. هذه هي بداية مرحلتنا الثانية في عملية البناء متعددة المراحل.

8. نسخ --from=installer /app/build /usr/share/nginx/html

هنا، نقوم بنسخ ملفات التطبيق المبنية من المرحلة السابقة (المثبت) إلى دليل خدمة Nginx. تطلب علامة --from=installer من Docker الحصول على الملفات من مرحلة التثبيت التي حددناها للتو.

تشغيل حاوية Docker الخاصة بك

بمجرد إعداد ملف Dockerfile، يمكنك إنشاء حاوية Docker وتشغيلها باستخدام الأوامر التالية:

docker build -t your-app-name .
docker run -dp 3000:80 your-app-name

تأكد من استبدال اسم تطبيقك باسم من اختيارك. ستقوم العلامة -dp بفصل الحاوية الخاصة بك وتعيين المنفذ 3000 على جهازك المضيف إلى المنفذ 80 في الحاوية، مما يسمح لك بالوصول إلى تطبيقك على http://localhost:3000.

خاتمة

وهذا هو الحال! لقد قمت للتو بإنشاء بنية Docker متعددة المراحل والتي تنقل تطبيقك من التطوير إلى الإنتاج باستخدام Nginx. إذا كانت لديك أي أسئلة أو أفكار حول هذه العملية، فلا تتردد في ترك تعليق أدناه!

Gotchas: أشياء يجب الانتباه إليها

أحد الأخطاء الشائعة عند العمل مع هذا الإعداد هو نسيان تعيين أرقام المنافذ الصحيحة. يستمع Nginx عادةً على المنفذ 80 داخل الحاوية، لكن إذا كنت تحاول الوصول إلى التطبيق على جهازك المحلي، فستحتاج إلى إعادة توجيه المنفذ الصحيح من الحاوية إلى جهازك. على سبيل المثال، إذا كنت تريد الوصول إلى التطبيق على المضيف المحلي:3000، فستحتاج إلى تشغيل الحاوية ذات العلامة -p 3000:80 لتعيين المنفذ 3000 على جهازك إلى المنفذ 80 في الحاوية.

افتقد هذه الخطوة، وستجد نفسك تتساءل لماذا تم تصميم كل شيء بشكل مثالي ولكن لا يمكنك الوصول إلى التطبيق في متصفحك!


العلامات والإشارات

@piyushsachdeva
فيديو اليوم الثالث

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/lloydrivers/cka-full-course-2024-day-340-multi-stage-docker-build-2ld3?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang@163 .com لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3