كيفية تشغيل MySQL في حاوية Docker – CloudSavvy IT

تسمح لك حاويات Docker بتشغيل تطبيقات جديدة بسرعة دون تلويث النظام الخاص بك بسبب التبعيات. تعد قاعدة بيانات MySQL مطلبًا شائعًا للبرامج القائمة على الويب. هذه هي كيفية تشغيل مثيل MySQL جديد في Docker في غضون دقائق.
ابدء
توفر صورة MySQL الرسمية على Docker Hub كل ما تحتاجه للبدء. الصورة متاحة لإصدارات MySQL 5.6 و 5.7 و 8.. حدد التسمية المراد استخدامها كتسمية للصورة:
docker pull mysql:8.
قبل النشر ، تحتاج إلى إعداد وحدة تخزين Docker أو ربط التحميل لاستمرار قاعدة البيانات. خلاف ذلك ، ستفقد بياناتك عند إعادة تشغيل الحاوية.يجب أن جبل /var/lib/mysql
في الحاوية.
تحتاج أيضًا إلى تعيين كلمة مرور لمستخدم جذر MySQL.استعمال MYSQL_ROOT_PASSWORD
متغيرات البيئة. إذا لم يتم ضبط هذا المتغير ، فسيرفض MySQL التهيئة. حاول اختيار كلمة مرور آمنة.
مع تلبية هذه المتطلبات الأساسية ، إليك كيفية تشغيل MySQL:
docker operate --title my-mysql -e MYSQL_ROOT_PASSWORD=key -v $House/mysql-knowledge:/var/lib/mysql -d mysql:8.
سيستغرق روتين التشغيل الأول لـ MySQL بضع ثوانٍ حتى يكتمل.يمكنك التحقق مما إذا كانت قاعدة البيانات قد بدأت عن طريق تشغيل الأمر التالي docker logs my-mysql
.تحقق من السطر الذي يحتوي على ما يلي ready for connections
.
Docker يؤلف
هذا docker run
يمكن أن يصبح هذا الأمر طويلاً بسرعة ، خاصةً إذا كانت لديك متطلبات تكوين معقدة.اكتب واحدة docker-compose.yml
الملفات أسهل في الصيانة. هذا مثال:
version: "3"
expert services:
mysql:
picture: mysql:8.
ecosystem:
- MYSQL_ROOT_PASSWORD
volumes:
- mysql:/var/lib/mysql
volumes:
mysql:
يمكنك بدء استخدام MySQL باستخدام MYSQL_ROOT_PASSWORD=protected docker-compose up -d
.
اتصل بـ MySQL
يمكنك الحصول على MySQL Shell تفاعلي من خلال إرفاقه بالحاوية وتشغيل الحاوية. mysql
أمر. يوفر هذا واجهة سطر أوامر MySQL كاملة ، بحيث يمكنك استخدام جميع الأوامر والأعلام المألوفة.
docker exec -it my-mysql mysql -p
يفتح هذا الأمر shell باعتباره المستخدم الجذر ويطالب بكلمة مرور.
لاستيراد ملف SQL من نظام الملفات ، يمكنك توجيهه إلى الأمر:
docker exec -it my-mysql mysql -psecret databases_identify < path-to-file.sql
إذا كنت تريد الوصول إلى MySQL من المضيف ، فيجب عليك إعداد ربط المنفذ. اربط المنفذ المضيف بالمنفذ 3306 من الحاوية.أضف ما يلي إلى ملف docker-compose.yml
إملأ mysql
تعريف الخدمة:
ports:
- 33060:3306
سيؤدي هذا إلى ربط المنفذ 33060 على المضيف بالمنفذ 3306 من الحاوية.إذا كنت لا تستخدم Docker Compose ، فيرجى تمرير -p 33060:3306
ل docker run
عند بدء تشغيل الحاوية.الآن يمكنك الاتصال بـ localhost:33060
استخدم عميل MySQL الذي يعمل على المضيف.
إذا كنت بحاجة من آخر بالنسبة لحاويات Docker ، من الأفضل استخدام Docker Compose. تحديد خدمة أخرى للحاوية الجديدة. ستوجد هاتان الحاوياتان في نفس شبكة Docker. ستتمكن من الاتصال باستخدام المنفذ 3306 على اسم المضيف لحاوية MySQL (يتطابق هذا المنفذ مع اسم الخدمة الذي حددته في ملف الإنشاء).
إنشاء قواعد البيانات والمستخدمين تلقائيًا
تدعم صورة MySQL Docker متغيرات البيئة الاختيارية ، مما يسمح لك بإدارة إعدادات قاعدة البيانات للتشغيل الأول. قم بتعيين المتغيرات التالية لإعداد قاعدة بيانات فارغة جديدة وحساب مستخدم تلقائيًا:
MYSQL_DATABASE
-اسم مخطط قاعدة البيانات الذي سيتم إنشاؤه عند تهيئة الخادم لأول مرة.MYSQL_USER
معMYSQL_PASSWORD
- إنشاء حساب مستخدم مبدئي جديد على التوالي.root
المستعمل.إذا قمت أيضا بتعيينMYSQL_DATABASE
متغير ، حساب المستخدم الجديد الخاص بك سوف تلقائيا يتم منح كافة الامتيازات في قاعدة البيانات المنشأة حديثًا.MYSQL_RANDOM_ROOT_PASSWORD
- اضبط هذا المتغير بحيث تقوم MySQL تلقائيًا بإنشاء كلمات مرور جديدة للمستخدمين التاليين:root
المستعمل.هذا محلMYSQL_ROOT_PASSWORD
التغيير. عند التشغيل لأول مرة ، سيتم إرسال كلمة المرور التي تم إنشاؤها إلى تدفق الإخراج القياسي. لذلك ، يجب أن تكون حذرًا للغاية عند استخدام هذا المتغير في بيئة CI - يمكن لأي شخص لديه حق الوصول إلى سجل العمل رؤية كلمة المرور!
ملف البذور للتشغيل الأول
بعد إنشاء قاعدة البيانات ، عادة ما تكون هناك جداول وبيانات يتم بثها في قاعدة البيانات. تم تكوين صورة MySQL للبحث عن ملفات .sh
و .sql
مع .sql.gz
الملفات الموجودة في الحاوية /docker-entrypoint-initdb.d
جدول المحتويات.
سيتم تنفيذ جميع الملفات التي تم العثور عليها بالتسلسل. سيكون الترتيب دائمًا أبجديًا.يمكنك تطبيق بادئة اسم ملف (على سبيل المثال 1-seed_tables.sql
/ 2-seed_data.sql
) للتأكد من إتمام العمليات بالترتيب المتوقع.
تسمح لك هذه الآلية ببذر مثيلات قاعدة البيانات الجديدة بالبيانات الأولية بسهولة.يمكنك كتابة Dockerfile الخاص بك باستخدام MySQL كصورة أساسية وإضافة الملف الأولي إليه /docker-entrypoint-initdb.d
. أو قم بربط الدليل الموجود على المضيف بدليل الحاوية.
ما لم تكن هناك قاعدة بيانات في دليل البيانات ، ستتجاهل MySQL ملف التهيئة. عند إعادة تشغيل الحاوية ، سيؤدي مسح محتويات دليل البيانات إلى بدء تهيئة جديدة.
اضبط إعدادات الخادم
سيتم تحميل ملف تكوين خادم MySQL من الموقع التالي /etc/mysql/conf.d
. استخدم Dockerfile للكتابة فوق أو ربط التثبيت لإضافة ملفات التكوين الخاصة بك إلى هذا الدليل لضبط إعدادات الخادم. يمكنك الحصول على قائمة بالخيارات المتاحة من دليل خادم MySQL.
يؤدي استخدام ملفات الخيارات إلى تسهيل عرض التكوين وتحريره في المستقبل. يمكنك فحص الملف مع المشروع في التحكم في الإصدار. ومع ذلك ، يمكن أيضًا استخدام علامات سطر الأوامر لإجراء التعديلات والتجارب لمرة واحدة.
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --general-log=on
هذا البديل docker run
سيبدأ MySQL مع تمكين تسجيل الاستعلام العادي.هذا mysql
الثنائي هو نقطة دخول الصورة ، لذلك يتم تمرير العلم إليها docker run
سيتم إعادة توجيه اسم الصورة إلى لاحقًا mysql
.
ختاما
مقارنة بتثبيت MySQL Server في "bare metal" ، فإن تشغيل MySQL في Docker يكون أسرع وأسهل. يمكنك تشغيل مثيلات MySQL متعددة دون التعرض لخطر التعارض.
تأتي صورة Docker الرسمية مع خيارات تكوين مفيدة ولديها دعم مضمن لبذور قواعد البيانات التي يتم تشغيلها لأول مرة. سواء كنت تبدأ من الصفر أو تستخدم بنية موجودة ، يمكن أن يساعدك ذلك على البدء بسرعة.