استخدام قاعدة بيانات محلية مُحتكمة يوفر مرونة ويبسط الإعداد. يتيح إعادة إنتاج بيئات الإنتاج بشكل دقيق بدون تعقيدات تثبيت قاعدة البيانات التقليدية. دوكر يسهل هذا العملية، مما يجعل من السهل نشر، وإدارة، وتوسيع قواعد البيانات في حاويات منعزلة ببضع أوامر فقط.
في هذا الدليل، ستعلم كيفية:
- تشغيل قاعدة بيانات محلية مُحتكمة
- الدخول إلى واجهة سطر الأوامر لحاوية قاعدة البيانات
- الاتصال بقاعدة بيانات مُحتكمة من主机ك
- الحفاظ على بيانات قاعدة البيانات في مجلد
- تنظيف المختبر
متطلباتالسابقة
للاследام بهذا الدليل، يجب أن يكون لديك دوكر مثبتًا. لتحصل على تعليمات التثبيت، يرجى الرجوع إلى موقع دوكر.
دليل خطوة بخطوة لتهيئة قواعد البيانات المحتكية
1. تشغيل قاعدة بيانات محلية مُحتكمة
أكثر أنظمة قواعد البيانات شيوعًا، مثل MySQL، PostgreSQL، وMongoDB، توفر صور Docker الرسمية المتاحة على Docker Hub. هذه الصور المدروسة تلتزم بأفضل الممارسات، مما يضمن حصولك على أحدث الميزات والتحديثات الأمنية.
للبدء، قم بزيارة Docker Hub وابحث عن قاعدة البيانات التي تهمك. توفر صفحة كل صورة إرشادات مفصلة حول كيفية تشغيل الكونتينر، وتخصيص إعداداتك، وتكوين قاعدة البيانات لتلبية احتياجاتك. لل��取 مزيد من المعلومات حول صورة MySQL المقدمة في هذا الدليل، راجع صفحة صورة MySQL على Docker Hub.
لتشغيل كونتينر قاعدة بيانات، يمكنك استخدام إما واجهة مستخدم Docker Desktop أو واجهة سطر الأوامر CLI. لتشغيل كونتينر باستخدام واجهة سطر الأوامر، قم بتنفيذ الأمر التالي في terminal:
$ docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -d mysql:latest
في هذا الأمر:
--name my-mysql
ي分配 الاسمmy-mysql
لكونتينرتك لسهولة الإشارة إليه.-e MYSQL_ROOT_PASSWORD=my-secret-pw
ي设定 MySQL كلمة المرور الجذر إلىmy-secret-pw
. استبدلmy-secret-pw
بكلمة مرور آمنة تختارها أنت.-e MYSQL_DATABASE=mydb
يقوم اختيارياً بإنشاء قاعدة بيانات تسمىmydb
. يمكنك تغييرmydb
إلى اسم قاعدة البيانات الذي تريده.-d
يقوم بتشغيل الحاوية في الوضع المنفصل، مما يعني أنها تعمل في الخلفية.mysql:latest
يحدد أنك تريد استخدام أحدث إصدار من صورة MySQL.
لتحقق من أن حاويةك تعمل، قم ب تشغيل docker ps
في طرفية:
run docker ps
يمكنك أيضًا التحقق من نفس الشيء في وحدة تحكم Docker Desktop:
2. الوصول إلى وحدة تحكم قاعدة البيانات المحاوية
عندما تعمل قاعدة البيانات داخل حاوية Docker، قد تحتاج إلى الوصول إلى وحدة تحكمها لإدارة قاعدة البيانات، تنفيذ الأوامر، أو القيام بمهام إدارية. يوفر Docker طريقة مباشرة للقيام بذلك باستخدام أمر docker exec
. بالإضافة إلى ذلك، يمكنك استخدام واجهة المستخدم الرسومية لـ Docker Desktop إذا كنت تفضل ذلك.
إذا لم يكن لديك حاوية قاعدة بيانات تعمل بعد، فالرجاء الرجوع إلى تشغيل قاعدة بيانات محلية محاوية. للاستفادة من وحدة التحكم في حاوية MySQL باستخدام وحدة التحكم، يمكنك استخدام الأمر docker exec
التالي.
docker exec -it my-mysql bash
في هذا الأمر:
docker exec
يخبر Docker أنك ترغب في تنفيذ أمر في حاوية تعمل.-it
يضمن أن الوحدة التي تصل إليها تفاعلية بحيث يمكنك كتابة الأوامر فيها.my-mysql
هو اسم حاوية MySQL الخاصة بك. إذا قمت بتسمية الحاوية بشكل مختلف عند تشغيلها، استخدم ذلك الاسم بدلاً من ذلك.- الأمر الذي تريد تشغيله داخل الحاوية هو bash. يقوم بفتح نافذة Bash تتيح لك التفاعل مع نظام ملفات الحاوية وتطبيقاتها المثبتة.
- بعد تنفيذ هذا الأمر، سيكون لديك الوصول إلى وحدة التحكم Bash داخل حاوية MySQL الخاصة بك، من خلالها يمكنك إدارة خادم MySQL الخاص بك مباشرة. يمكنك تشغيل Exit للعودة إلى الطرفية.
تحقق مما إذا كانت الحاوية تعمل.
run docker ps
بمجرد الوصول إلى وحدة التحكم في الحاوية، يمكنك تشغيل أي أدوات متاحة في تلك الحاوية. يوضح المثال التالي (Image) استخدام MySQL في الحاوية لسرد قواعد البيانات.
Mysql -u root -p
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> create database testdb;
Query OK, 1 row affected (0.11 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
6 rows in set (0.00 sec)
mysql> connect testdb;
Connection id: 12
Current database: testdb
mysql> SHOW TABLES;
Empty set (0.02 sec)
mysql> create table test (id numeric,fname varchar(20));
Query OK, 0 rows affected (0.10 sec)
mysql> SHOW TABLES;
+------------------+
| Tables_in_testdb |
+------------------+
| test |
+------------------+
1 row in set (0.00 sec)
mysql> insert into test values (1,'arvind');
Query OK, 1 row affected (0.08 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
+------+--------+
| id | fname |
+------+--------+
| 1 | arvind |
+------+--------+
1 row in set (0.00 sec)
الجدول الذي أنشأناه والبيانات التي حفظناها في جدول الاختبار تظل مستمرة فقط طالما نستخدم نفس الحاوية؛ ستتعرض جميع البيانات للضياع بمجرد إعادة إنشاء أو بناء حاوية جديدة.
يمكنك التحقق من ذلك عن طريق الخروج من الحاوية والعودة للولوج إلى قاعدة البيانات في الحاوية لرؤية ما إذا كانت البيانات موجودة. ستجد أن البيانات لا تزال موجودة في قاعدة البيانات طالما كانت الحاوية تعمل.
3. الاتصال بقاعدة بيانات مدمجة من جهازك المضيف
الاتصال بقاعدة بيانات مُحاوِطة (containerized) من جهازك المضيف يتطلب تعيين port داخلي في المحاور إلى port على جهازك المضيف. عملية التخريج هذه تضمن أن قاعدة البيانات داخل المحاور يمكن الوصول إليها عبر شبكة جهازك المضيف. للـ MySQL
، هو Port الافتراضي هو 3306
. ب’exposing هذا Port، يمكنك استخدام مجموعة متنوعة من أدوات إدارة قاعدة البيانات أو التطبيقات على جهازك المضيف للتفاعل مع قاعدة بياناتك MySQL.
قبل أن تبدأ، يجب إزالة أي محاور قمت بتشغيلها مسبقًا لهذا الدليل. لوقف وإزالة المحاور، يمكنك:
- في الطرفية، قم بتنفيذ الأمر docker remove
--force my-mysql
لإزالة المحاور المسمىmy-mysql
; - أو، في واجهة Docker Dashboard، اختر أيقونة الحذف بجانب محاورك في عرض المحاور.
ثم، يمكنك استخدام واجهة مستخدم Docker Desktop أو واجهة سطر الأوامر لتشغيل المحاور مع Port المُرتبط.
docker run -p 3307:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -d mysql:latest
في هذا الأمر، -p 3307:3306
يربط Port 3307
على المضيف إلى Port 3306
داخل المحاور.
4. الحفاظ على بيانات قاعدة البيانات في مجلد (Volume)
الحفاظ على بيانات قاعدة البيانات في مجلد Docker هو أمر ضروري لضمان بقاء بياناتك بعد إعادة تشغيل أو إزالة المحاور. يتيح لك مجلد Docker تخزين ملفات قاعدة البيانات خارج الطبقة القابلة للكتابة للمحاور، مما يجعل من الممكن ترقية المحاور، التبديل بين القواعد، ومشاركة البيانات دون فقدانها. يمكنك توصيل مجلد إلى محاور قاعدة البيانات باستخدام إما واجهة سطر الأوامر لـ Docker أو واجهة مستخدم Docker Desktop.
ملاحظة: مرة أخرى، كما فعلت في القسم السابق المتعلق بالاتصال بقاعدة بيانات معتمدة على الحاويات، قبل أن تبدأ، يجب عليك إزالة أي حاويات قمت بتشغيلها مسبقًا لهذا الدليل.
ثم، يمكنك استخدام واجهة مستخدم Docker Desktop أو سطر الأوامر لتشغيل الحاوية مع وحدة التخزين.
لتشغيل حاوية قاعدة بياناتك مع وحدة تخزين متصلة، شمل الخيار —v
مع أمر docker run
الخاص بك. يحدد هذا اسم وحدة التخزين و المسار حيث ت�� قاعدة البيانات بياناتها داخل الحاوية. إذا لم تكن وحدة التخزين موجودة، يقوم Docker بإنشائها آليًا لك.
لتشغيل حاوية قاعدة بيانات مع وحدة تخزين متصلة، تأكد من أن البيانات تظل قائمة. قم بتشغيل الحاوية وتوصيل وحدة التخزين.
docker run –name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -v my-db-volume:/var/lib/mysql -d mysql:latest
هذا الأمر يربط وحدة التخزين المسمى my-db-volume
إلى الدليل /var/lib/mysql
في الحاوية.
قم بإنشاء بعض البيانات في قاعدة البيانات. استخدم أمر docker exec
لتشغيل MySQL داخل الحاوية وإنشاء جدول.
docker exec my-mysql mysql -u root -pmy-secret-pw -e "CREATE TABLE IF NOT EXISTS mydb.mytable (column_name VARCHAR(255)); INSERT INTO mydb.mytable (column_name) VALUES ('value');"
يستخدم هذا الأمر أداة MySQL في الحاوية لإنشاء جدول يسمى mytable
يحتوي على عمود يسمى column_name
، وأخيرًا، يقوم بInsert قيمة.
أوقف وإزيل الحاوية. بدون وحدة تخزين، سيتم فقد الجدول الذي أنشأته عند إزالة الحاوية.
docker remove --force my-mysql
أبدأ حاوية جديدة مع وحدة التخزين متصلة. هذه المرة، لا تحتاج إلى تحديد أي متغيرات بيئية حيث يتم حفظ التكوين في وحدة التخزين.
docker run --name my-mysql -v my-db-volume:/var/lib/mysql -d mysql:latest
تأكد من أن الجدول الذي أنشأته لا يزال موجودًا. ثم استخدم أمر docker exec
مرة أخرى لتشغيل MySQL داخل الحاوية.
docker exec my-mysql mysql -u root -pmy-secret-pw -e "SELECT * FROM mydb.mytable;"
هذا الأمر يستخدم أداة MySQL في الحاوية لاختيار جميع السجلات من الجدول table. يجب أن ترى ناتجاً مثل ما يلي.
column_name
value
5. تنظيف صورة حاوية MySQL
لحذف حاوية، استخدم الأمر docker remove
مع أسماء أو معرفات الحاويات مفصولة بفراغات. على سبيل المثال:
docker remove --force 90b8831a4b8
docker remove --force 36252896d6ff
docker remove --force d86dff3809e8
الخاتمة
في النهاية، تشغيل MySQL مع Docker يقدم حلاً محمولاً وقابلاً للتمديد وفعالاً لإدارة قواعد البيانات. تساعد حاويات Docker المعزولة في تبسيط التوزيع، تقليل مشاكل التوافق، وتحسين استخدام الموارد. بفضل السماح بالتحكم السهل في الإصدارات وإعادة ضبط البيئات، يدعم Docker التطوير والاختبار السريعين. إنه مثالي لإدارة قواعد بيانات MySQL في الخدمات الصغيرة، مما يجعلها أسهل في التوزيع والتمديد مع الحفاظ على أداء قوي.
Source:
https://dzone.com/articles/guide-for-running-mysql-database-in-docker-container