كيفية تشغيل حاوية Postgres عبر Docker على Oracle Cloud Infrastructure
إذا كنت تبحث عن طريقة عملية ومنخفضة التكلفة لتشغيل قاعدة بيانات Postgres داخل حاوية Docker على السحابة، فإن Oracle Cloud Infrastructure (OCI) يوفر خياراً مناسباً للغاية، خصوصاً مع فئة Always Free. في هذا الدليل، ستتعرف على الخطوات الأساسية لإنشاء آلة افتراضية، وتهيئة الشبكة، وتثبيت Docker، ثم تشغيل حاوية Postgres وربطها من جهازك المحلي بسهولة.
الفكرة الأساسية هنا هي استخدام آلة افتراضية VM مجانية ضمن OCI، ثم نشر قاعدة بيانات PostgreSQL داخل حاوية Docker بحيث تصبح متاحة للاستخدام في المشاريع الشخصية أو البيئات التجريبية الصغيرة.
لماذا Oracle Cloud Infrastructure مناسب لتشغيل Docker وPostgres؟
تمنح Oracle خيار Always Free الذي يتيح تشغيل بعض الموارد السحابية دون تكلفة مستمرة، وهو ما يجعله مناسباً للمطورين، ولمشاريع الاختبار، ولمن يريد تعلّم إدارة الخدمات السحابية عملياً.

لكن من المهم الانتباه إلى أن الحاوية التي ستشغلها يجب أن تتوافق مع موارد الآلة الافتراضية المجانية، والتي تأتي عادة بالمواصفات التالية:
- النوع: VM.Standard.E2.1.Micro
- 1/8 OCPU
- 1 GB RAM
- عرض نطاق شبكي يصل إلى 480 Mbps
- مساحة تخزين للإقلاع تتجاوز 45 GB
كما يجب الانتباه إلى نقطة مهمة جداً: إذا أردت الوصول إلى الحاوية من خارج الخادم، فلا يكفي فقط ربط المنفذ داخل Docker، بل يجب أيضاً فتح هذا المنفذ من خلال Ingress Rules ضمن إعدادات الأمان الخاصة بالشبكة.
ومن الأمور الأساسية كذلك أن Docker لا يكون مثبتاً افتراضياً على الآلة، لأن OCI يوفّر لك نظام Oracle Linux فقط عند الإنشاء الأولي، لذلك سنقوم بتثبيته يدوياً.
الخطوة الأولى: إنشاء VM على Oracle Cloud Infrastructure
أول ما تحتاج إليه هو إنشاء آلة افتراضية جديدة. إذا كان لديك حساب سحابي جاهز على Oracle، فالأمر سيكون مباشراً. أما إذا كنت جديداً على المنصة، فيمكنك التسجيل عبر صفحة الخدمة المجانية:
https://cloud.oracle.com/free
عند إنشاء المثيل، ستلاحظ أن كثيراً من الخيارات مثل المنطقة، والصورة الافتراضية، وبعض إعدادات الشبكة تكون مملوءة مسبقاً. في أغلب الحالات، يمكن الاعتماد على الإعدادات الافتراضية ما لم تكن لديك متطلبات خاصة.
بعد بدء الإنشاء، ستبدأ Oracle في تجهيز الآلة الافتراضية كما يظهر عادة في لوحة التحكم.

بعد وقت قصير، ستصبح الآلة في حالة تشغيل، وسيتم إسناد Public IP لها، وهو العنوان الذي ستستخدمه لاحقاً للوصول عبر SSH أو للاتصال بقاعدة البيانات من الخارج.

ويمكن تصور البنية في هذه المرحلة على النحو التالي: آلة افتراضية عامة داخل شبكة VCN، وسيتم تشغيل حاوية Postgres بداخلها وربطها بالمنفذ الذي نختاره.

الخطوة الثانية: إعداد Ingress Rules لفتح منافذ الوصول
لكي تتمكن من الوصول إلى الحاوية من خارج الخادم، يجب ضبط قواعد الدخول Ingress Rules في Security List الخاصة بالشبكة الفرعية العامة Public Subnet المرتبطة بالآلة.
الفكرة هنا بسيطة: أي منفذ ستقوم بربطه بين الخادم والحاوية عبر Docker، يجب أن يكون مفتوحاً أيضاً على مستوى الشبكة داخل OCI.
افتح صفحة تفاصيل Public Subnet، ثم انتقل إلى Security List المرتبطة بها أو أنشئ قائمة جديدة إذا رغبت في ذلك.

بما أننا سنشغّل صورة Postgres، فمن المنطقي استخدام المنفذ الافتراضي له وهو 5432. لذلك نضيف قاعدة تسمح بالوصول إلى هذا المنفذ.

يمكن ضبط الإعدادات الأساسية كما يلي:
- Source CIDR:
0.0.0.0/0 - Source Port Range: تركه فارغاً
- Destination Port Range:
5432 - Protocol:
TCP
هذا الإعداد يعني أن أي عميل يمكنه الوصول إلى المنفذ المحدد. في البيئات الإنتاجية، يفضّل دائماً تقييد الوصول إلى عناوين IP موثوقة فقط لتحسين الأمان.
الخطوة الثالثة: الاتصال بالآلة عبر SSH وتثبيت Docker
بعد تشغيل الآلة الافتراضية وضبط إعدادات الشبكة، حان الوقت للاتصال بها. ستستخدم لهذا الغرض بروتوكول SSH مع المفتاح الخاص الذي أنشأته أثناء إنشاء المثيل.
ssh opc@public-id-address -i private-key-file
استبدل public-id-address بعنوان Public IP الخاص بالآلة، واستبدل private-key-file بمسار ملف المفتاح الخاص على جهازك.
بعد الدخول إلى الخادم، نفّذ أوامر تثبيت Docker التالية:
sudo yum-config-manager --enable ol7_addons
sudo yum install docker-engine -y
sudo systemctl start docker
sudo systemctl enable docker

بهذا تكون قد ثبّت Docker وفعّلته ليعمل تلقائياً مع كل إعادة تشغيل للخادم.
تشغيل حاوية Postgres باستخدام Docker
بعد تثبيت Docker، يمكنك الآن تشغيل حاوية Postgres بسهولة. استخدم الأمر التالي، مع الحرص على تغيير كلمة المرور إلى قيمة قوية وآمنة:
sudo docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=mysecretpassword postgres
هذا الأمر ينفذ عدة مهام في وقت واحد:
- تشغيل الحاوية في الخلفية باستخدام
-d - ربط المنفذ
5432على الخادم بالمنفذ5432داخل الحاوية - تسمية الحاوية باسم
postgres - تحديد كلمة مرور المستخدم الافتراضي
postgres - سحب صورة
postgresالرسمية من Docker Hub إذا لم تكن موجودة
للتحقق من أن الحاوية تعمل بشكل صحيح، استخدم الأمر التالي:
sudo docker ps
ربط المنافذ يتم وفق النمط التالي:
-p <host_port>:<container_port>
وفي حالتنا، هذا يعني أن المنفذ 5432 على الخادم يشير مباشرة إلى المنفذ 5432 داخل حاوية Postgres.
إنشاء قاعدة بيانات داخل حاوية PostgreSQL
الآن بعد أن أصبحت الحاوية تعمل، يمكنك الدخول إليها وإنشاء قاعدة بيانات جديدة.
أولاً ادخل إلى الحاوية:
sudo docker exec -it postgres bash
بعد ذلك افتح واجهة psql باستخدام المستخدم الافتراضي:
psql -U postgres
ثم أنشئ قاعدة البيانات كما يلي:
root@12d48fde2627:/# psql -U postgres
psql (13.3 (Debian 13.3-1.pgdg100+1))
Type "help" for help.
postgres=# CREATE DATABASE testdb;
CREATE DATABASE
postgres=# \q
بهذا أصبحت لديك قاعدة بيانات باسم testdb تعمل داخل الحاوية.
كيفية الاتصال بقاعدة Postgres من جهازك المحلي
بعد الانتهاء من إعداد الخادم والحاوية وقاعدة البيانات، يمكنك استخدام أي أداة لإدارة PostgreSQL من جهازك المحلي مثل:
- DBeaver
- pgAdmin
استخدم بيانات الاتصال التالية:
| الإعداد | القيمة |
|---|---|
| Host | عنوان Public IP الخاص بالآلة |
| Port | 5432 |
| Username | postgres |
| Password | القيمة التي وضعتها في POSTGRES_PASSWORD |
| Database | testdb |
إذا كانت إعدادات الشبكة صحيحة والحاوية تعمل، فسيتم الاتصال بقاعدة البيانات بنجاح.
ملاحظات تقنية مهمة قبل استخدام هذا الإعداد
1. الموارد محدودة في Always Free
رغم أن تشغيل Postgres بهذه الطريقة ممتاز للتجارب والمشاريع الصغيرة، فإن موارد الخطة المجانية محدودة، لذلك لا يُنصح بالاعتماد عليها لتطبيقات ذات ضغط مرتفع أو قواعد بيانات كبيرة الحجم.
2. تأمين الوصول الخارجي
فتح المنفذ 5432 للعالم عبر 0.0.0.0/0 مفيد للتجربة، لكنه ليس الخيار الأكثر أماناً. الأفضل هو تقييد الوصول إلى عنوان IP الخاص بك أو استخدام طبقة إضافية من الحماية.
3. استمرارية البيانات
الأمر المستخدم لتشغيل الحاوية لا يضيف Volume دائم لتخزين البيانات. هذا يعني أن حذف الحاوية قد يؤدي إلى فقدان البيانات. إذا كنت تريد استمرارية حقيقية، فمن الأفضل ربط مجلد أو Volume مخصص ببيانات Postgres.
4. تشغيل Docker كمستخدم غير root
في هذا الشرح استُخدم sudo مع أوامر Docker، وهو مناسب كبداية. لكن في بيئات العمل المتقدمة قد تحتاج إلى إعداد Docker ليعمل مع مستخدم غير root وفق أفضل الممارسات الأمنية.
ملخص الخطوات العملية
- إنشاء آلة افتراضية مجانية على Oracle Cloud Infrastructure.
- الحصول على Public IP بعد اكتمال التهيئة.
- فتح المنفذ
5432ضمن Ingress Rules. - الاتصال بالخادم عبر SSH.
- تثبيت Docker على Oracle Linux.
- تشغيل حاوية Postgres باستخدام Docker.
- إنشاء قاعدة بيانات جديدة داخل الحاوية.
- الاتصال بقاعدة البيانات من جهازك المحلي عبر DBeaver أو pgAdmin.
الخلاصة التقنية
تشغيل Postgres داخل Docker على Oracle Cloud Infrastructure يُعد خياراً عملياً واقتصادياً للمطورين الذين يريدون بيئة اختبار سريعة وقابلة للوصول من الإنترنت. الميزة الأهم في هذا النهج هي سهولة الإعداد وقلة التكلفة، لكن نجاحه يعتمد على فهم جيد لإعدادات الشبكة، وفتح المنافذ بشكل صحيح، والانتباه إلى الأمان واستمرارية البيانات. إذا كنت تعمل على مشروع جانبي أو بيئة تطوير، فهذه الطريقة تمنحك نقطة انطلاق ممتازة دون تعقيد كبير.