في منشور المدونة هذا، سنستكشف 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 هذا، خطوة بخطوة:
يسحب هذا الخط صورة Node.js الرسمية (الإصدار 18 على Alpine Linux) من Docker Hub. فكر في Docker Hub كمكتبة للصور. باستخدام هذا السطر، نحدد أننا نريد استخدام Node.js كصورة أساسية للمرحلة الأولى من البناء.
يقوم هذا الأمر بتعيين دليل العمل داخل الحاوية على /app. يمكنك التفكير في هذا على أنه إنشاء مجلد مخصص لتطبيقك داخل الحاوية، على غرار الطريقة التي يمكنك بها تنظيم الملفات على سطح المكتب.
هنا، نقوم بنسخ ملفات package.json وpackage-lock.json من دليلنا المحلي إلى دليل عمل الحاوية. تحتوي هذه الملفات على معلومات حول التبعيات التي يحتاجها تطبيقنا.
يعمل هذا الأمر على تشغيل npm install، الذي يقوم بتثبيت كافة التبعيات المحددة في package.json.
يقوم هذا السطر بنسخ بقية ملفات التطبيق الخاصة بنا إلى الحاوية. إنه يجمع كل شيء من دليلنا المحلي إلى دليل /app داخل الحاوية.
الآن نقوم بتجميع تطبيقنا باستخدام الأمر npm run build. عادةً ما تقوم هذه الخطوة بتحويل الكود الخاص بنا (غالبًا React، في هذه الحالة) إلى حزمة ثابتة، جاهزة لتقديمها للمستخدمين. سيتم وضع مخرجات هذا الأمر في دليل البناء داخل /app.
في هذا السطر، ننتقل إلى صورة أساسية جديدة: Nginx. Nginx هو خادم ويب قوي يمكنه خدمة الملفات الثابتة، مثل تلك التي أنشأناها للتو. هذه هي بداية مرحلتنا الثانية في عملية البناء متعددة المراحل.
هنا، نقوم بنسخ ملفات التطبيق المبنية من المرحلة السابقة (المثبت) إلى دليل خدمة Nginx. تطلب علامة --from=installer من 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. إذا كانت لديك أي أسئلة أو أفكار حول هذه العملية، فلا تتردد في ترك تعليق أدناه!
أحد الأخطاء الشائعة عند العمل مع هذا الإعداد هو نسيان تعيين أرقام المنافذ الصحيحة. يستمع Nginx عادةً على المنفذ 80 داخل الحاوية، لكن إذا كنت تحاول الوصول إلى التطبيق على جهازك المحلي، فستحتاج إلى إعادة توجيه المنفذ الصحيح من الحاوية إلى جهازك. على سبيل المثال، إذا كنت تريد الوصول إلى التطبيق على المضيف المحلي:3000، فستحتاج إلى تشغيل الحاوية ذات العلامة -p 3000:80 لتعيين المنفذ 3000 على جهازك إلى المنفذ 80 في الحاوية.
افتقد هذه الخطوة، وستجد نفسك تتساءل لماذا تم تصميم كل شيء بشكل مثالي ولكن لا يمكنك الوصول إلى التطبيق في متصفحك!
@piyushsachdeva
فيديو اليوم الثالث
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3