شروحات الكمبيوتر والإنترنت والموبايل

مشكلة شبكة Docker في API محلي لـ Go-SAM

تعتبر بناء التطبيقات الحديثة التي تعتمد على خدمات السحابة أمرًا بالغ الأهمية في عصر التكنولوجيا الحالي، حيث أصبحت Amazon Lambda واحدة من أبرز الخيارات المتاحة للمطورين لإنشاء وظائف سببية يمكن تنفيذها بسهولة. ومع ذلك، قد تواجه بعض التحديات الفنية، خاصة عند التعامل مع قواعد البيانات عبر شبكات Docker. في هذا المقال، سنتناول مشكلة تتعلق بشبكة Docker عند العمل مع وظائف Lambda محلية باستخدام AWS SAM.

مشكلة الاتصال بقاعدة البيانات

يمثل الاتصال بقاعدة بيانات PostgreSQL من وظائف Lambda المحلية تحديًا شائعًا. عند استخدام AWS SAM (Serverless Application Model) مع Docker، قد تواجه مشكلات في الاتصال بالشبكة. في هذه الحالة، يكون الاتصال من جهازك المحلي إلى قاعدة البيانات ناجحًا، ولكن الأمر يختلف تمامًا عند المحاولة من Lambda المحلية.

ظهرت المشكلة عندما حاول أحد المستخدمين إعداد بيئة العمل باستخدام شبكة Docker. وفقًا لوصف المشكلة، قام المستخدم بإنشاء شبكة Docker جديدة، ثم حاول إعداد قاعدة بيانات PostgreSQL، وواجه رسائل خطأ تشير إلى أنه تعذر الاتصال بالخدمة.

خطوات الإعداد الصحيحة

لضمان إعداد بيئة العمل بشكل صحيح، يمكن اتباع الخطوات التالية:

  1. إنشاء شبكة Docker: يجب أن يكون لديك شبكة Docker تعمل بشكل صحيح، وإلا لن تتمكن من توصيل خدماتك بشكل مناسب. قم بإنشاء الشبكة باستخدام الأمر:

    docker network create my-sam-network
  2. إعداد PostgreSQL: تأكد من إعداد قاعدة البيانات بشكل صحيح مع الخيارات المناسبة لتشغيلها في الشبكة. استخدم الأمر التالي لإنشاء حاوية PostgreSQL:

    docker run -d --name postgres_db_new --restart always --network my-sam-network -e POSTGRES_USER=local_db -e POSTGRES_PASSWORD=local_db -e POSTGRES_DB=vigitrack -p 5432:5432 -v postgres_data:/var/lib/postgresql/data postgres:15
  3. تشغيل SAM: عند تشغيل خدمات Lambda باستخدام SAM، يجب التأكد من أنك تستخدم نفس الشبكة التي تم إعداد قاعدة البيانات عليها. استخدم الأمر:
    sam local start-api --docker-network my-sam-network

تحليل مسبب المشكلة

الرسالة التي تظهر "فشل تنفيذ الأمر ping على قاعدة البيانات" تشير إلى أن تطبيق Lambda المحلي لا يمكنه الوصول إلى قاعدة البيانات. قد يكون السبب في ذلك هو استخدام عنوان IP غير صحيح. إذا كنت تستخدم "localhost" في سلسلة الاتصال، فهذا يعني أن الاتصال يتم فقط عبر الشبكة المحلية لجهازك، وليس حاوية Docker.

لذا، يجب تعديل سلسلة الاتصال لتشير إلى اسم الخدمة داخل شبكة Docker. مثلا، إذا قمت بتسمية قاعدة البيانات بـ "postgres_db_new"، يجب أن تبدو سلسلة الاتصال كما يلي:

connStr := "host=postgres_db_new port=5432 user=local_db password=local_db dbname=vigitrack sslmode=disable"

التصحيح والمتابعة

يجب التأكد من أن جميع المكونات مثل Docker وSAM محدثة إلى النسخ الأخيرة. بالإضافة إلى ذلك، يُفضل مراجعة إعدادات الجدار الناري والحماية على جهازك لضمان عدم اعتراض الاتصالات بين الحاويات.

يجدر بالذكر أن هذه الحالة ليست الوحيدة التي قد تواجهها في سياق "go – SAM Local Api Docker Network Issue". قد تصادف مشكلات أخرى تتعلق بإعدادات Docker، أو تكوينات Lambda، أو حتى إصدارات PostgreSQL، لذا يجب دائمًا البحث والتحقق من العناصر ذات الصلة عند ظهور أي عطل.

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

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!