أنا مؤمن بشدة بالحفاظ على نظافة نظام المضيف الخاص بي. وحاويات Docker هي الحل الأمثل لذلك. لنفترض أنك تعمل على تطبيق React مع واجهة Node/Express الخلفية وخادم MySQL لتلبية احتياجات قاعدة بياناتك. عادةً، يمكنك تثبيت mysql في نظامك المضيف، وإنشاء قاعدة بيانات، وإنشاء مستخدم بكلمة مرور ومنح المستخدم امتيازات للعمل مع قاعدة البيانات تلك.
بدلاً من إضاعة الوقت في تكوين هذا في كل مرة لكل مشروع على حدة، أستخدم فقط صورة Docker لإنشاء خادم قاعدة بيانات MySQL الخاص بي، ليكون جاهزًا وتشغيله في بضع ثوانٍ، مع كل الإعداد اللازم الذي أريده بحاجة من أي وقت مضى.
صدقني، بمجرد معرفة سير عملك باستخدام هذا المسار، فلن تعود أبدًا إلى الطرق القديمة. إذن، إليك كيفية القيام بذلك وبطريقة أساسية وبسيطة جدًا.
إذا كانت لديك بعض الخبرة في استخدام Docker وترغب في تخطي هذا البرنامج التعليمي واستخدام إصدار TLDR مباشرةً، فسيكون هذا Gist أسرع بكثير.
لاستخدام Docker، نحتاج إلى Docker، دوه! لن أخوض في تفاصيل تثبيت Docker هنا. إذا لم تكن مرتاحًا مع واجهة سطر الأوامر (CLI) أو كنت تستخدم Windows/MacOS، فانتقل إلى Docker Desktop، فهو سيقوم بكل العمل الثقيل نيابةً عنك خلف الكواليس.
يمكن لمستخدمي Linux تثبيت Docker Engine باستخدام المكون الإضافي Docker Compose أو Docker Desktop أيضًا إذا لم تشعر بذلك.
لا تحتاج عادةً إلى حساب على Docker Hub لتنزيل الصور العامة مثل صورة MySQL الرسمية التي سنستخدمها.
هناك طريقتان للقيام بذلك.
لتتمكن من تشغيل الحاوية مباشرةً باستخدام أمر docker run، سيتعين عليك تنزيل صورة MySQL على نظامك أولاً. لسحب الصورة إلى نظامك، ما عليك سوى استخدام هذا الأمر:
docker pull mysql
ملاحظة: إذا لم تكن بحاجة إلى إصدار معين من MySQL، فسيقوم هذا الأمر بتنزيل الإصدار الأحدث (الإصدار الذي يحتوي على أحدث علامة). يمكنك استكشاف المزيد من العلامات والإصدارات من Docker Hub إذا كنت بحاجة إلى ذلك.
بمجرد الانتهاء من تنزيل Docker، يمكنك رؤية الصورة التي تم تنزيلها مثل هذا:
docker image ls
الآن، لتشغيل الحاوية، عليك إضافة الكثير من العلامات باستخدام أمر docker run. يمكنك زيارة هذا الرابط للتحقق من جميع الخيارات المتاحة لك. تحتاج أيضًا إلى تذكر جميع العلامات التي تحتاج إلى إضافتها نظرًا لأن فقدان بعضها قد يؤدي إلى حدوث أخطاء أو بدء حاوية غير قادرة.
علاوة على ذلك، في كل مرة ترغب فيها في تشغيل الحاوية الخاصة بك، سيتعين عليك إما استخراج هذا الأمر الطويل من سجل المحطة الطرفية، أو كتابته مرة أخرى. ليس هناك نقطة من ذلك.
هذا هو السبب الذي يجعلني لا أوصي بهذا النهج. هناك طريقة أفضل.
سنقوم بإنشاء ملف Docker Compose والذي سيخبر Docker بما نحتاجه أثناء تشغيل الحاوية. بمجرد وضع كل شيء في الملف، يصبح إطلاق الحاوية أمرًا سهلاً.
ملاحظة: يمكنك إنشاء ملف الإنشاء الخاص بك بأي اسم. إذا كنت تستخدم اسمك أو قمت بتخزين ملف الإنشاء الخاص بك في مجلدات أخرى، فسيتعين عليك توفير علامة -f حتى يعمل. وبدلاً من ذلك، إذا كنت تقوم بتشغيل الأمر من نفس المجلد الذي يحتوي على ملفك، فيمكنك تسمية الملف docker-compose.yaml.
ملف Docker Compose هو ملف YAML. سوف يبدو شكلنا كالتالي:
# This Docker Compose YAML deploys a MySQL database services: container-name: image: mysql # Official MySQL image from Docker Hub restart: always environment: # Note - Root password is mandatory for the container to run and grant privileges to our User. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} # Same name as used in your project # DB User Details MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} ports: # Adjust this port as per your needs ->: - 3308:3306 # DB is available at localhost:3308 on the host. volumes: - ./volumes/db-mnt:/var/lib/mysql
هذا الملف موجود أيضًا على Gist المذكور في البداية.
من المهم أن تعرف
يمكنك إما إنشاء هذا الملف في نفس المجلد الذي يوجد به ملف الإنشاء الخاص بك، أو يمكنك إنشاؤه في أي مكان تريده ولكن ستحتاج إلى توفير المسار أثناء استدعاء docker-compose.
# Content of the Environment Variables file MYSQL_ROOT_PASSWORD=rootpassword MYSQL_DATABASE=nameofdatabase MYSQL_USER=dbusername MYSQL_PASSWORD=dbuserpassword
بمجرد الانتهاء من كل هذا، يمكننا ببساطة استخدام أمر واحد صغير وستكون قاعدة البيانات الخاصة بنا جاهزة وجاهزة في انتظارنا.
docker-compose up -d
أنت الآن جاهز لإجراء اتصال بقاعدة البيانات باستخدام الوسائل المفضلة لديك.
وبما أننا قمنا بتكوين حاوياتنا للتشغيل من ملف إنشاء، فيمكنك نسخها احتياطيًا بأمان في نظام git في الريبو الخاص بك. فقط تأكد من تجاهل ملف .env.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3