28/10/2024
مكملين كلامنا عن Docker! ده Part 2
ده Part 2 من البوست اللي فات. حصلت معانا مشكلة لما بنفتح على الـport 5000 ومش بنلاقي حاجة. فالأول، محتاجين نعرف سبب المشكلة، وبعدها نشرح الحل! 💡
🔸 الفرق بين الـContainer و الـImage
في بوست سابق من السلسلة، وضحنا الفرق بين الـContainer و الـImage، وقلنا إن الـContainer هو Environment منفصلة بذاته. لو مشوفتش البوست ده، ارجع شوفه الأول 👀!
المشكلة
المشكلة اللي حصلت إن المشروع بيكون Deployed على Port 5000 جوا الـContainer.
الحل
الحل ببساطة هو إنك لما تعمل Run للـContainer، تضيف Flag للـPort زي كده: -p 5000:5000 🔌. ده بيخلي أي Request ييجي على 5000 عندك يتوجه على 5000 جوه الـContainer، وكده نبقى حلينا المشكلة! 💪
📌 ممكن تسألني شوية أسئلة زي:
إيه الفرق بين RUN و CMD؟
الاتنين بينفذوا Commands، لكن RUN بيتنفذ أثناء الـBuild قبل ما الـContainer يقوم. أما CMD فبيشغل الـCommand أول ما الـContainer يبدأ ✅.
ليه عملت Copy للـpackage.json لوحده والباقي لوحده؟
دي حركة مهمة للـDocker Optimization! 🚀 Docker بيعمل Cache للCommands اللي اتنفذت قبل كده، فلو عملنا Copy للـpackage.json لوحده، وخليناه في خطوة مستقلة، مش هيعيد تثبيت الـnpm لو الـpackage.json ما اتغيرش. أما لو حطيناه مع الـSource Code، هيعمل npm install في كل مرة، وده مش Efficient.
🎉 ده كان الجزء الثاني من البوست
فيه حلول للمشكلة اللي واجهتنا، وكمان شرح ليه عملنا الحاجات بالطريقة دي. لو عندك أي سؤال، سيب كومنت وهرد عليك. البوست الجاي إن شاء الله هنبدأ نتكلم عن الـVolumes، أنواعها، وازاي نستخدمها 🔥