تشغيل Discourse مع Postgres قيد التشغيل في Docker

مرحباً

أحاول إعداد Discourse في بيئة التطوير المحلية الخاصة بي مع اختلاف بسيط: أقوم بتشغيل Postgres في Docker.
قاعدة البيانات متاحة باستخدام psql من نظام التشغيل، ولكن عندما حاولت إنشاء قاعدة البيانات باستخدام rake أو rails، لم ينجح الأمر. اتبعت هذه الخطوات:

cp discourse_defaults.conf discourse.conf

ثم قمت بتحديث discourse.conf

...
db_host = 127.0.0.1
...
db_username = postgres
db_password = mysecretpassword
...

ولكن عندما أحاول تشغيل db:create

فشل الاتصال بالخادم على المقبس \"/var/run/postgresql/.s.PGSQL.5432\": لا يوجد مثل هذا الملف أو الدليل

هل الخادم يعمل محليًا ويقبل الاتصالات على هذا المقبس؟
تعذر إنشاء قاعدة بيانات 'discourse_development'. يرجى التحقق من التكوين الخاص بك.
تم إلغاء Rails!
ActiveRecord::NoDatabaseError: فشل الاتصال بالخادم على المقبس \"/var/run/postgresql/.s.PGSQL.5432\": لا يوجد مثل هذا الملف أو الدليل

هل الخادم يعمل محليًا ويقبل الاتصالات على هذا المقبس؟

بسبب:
PG::ConnectionBad: فشل الاتصال بالخادم على المقبس \"/var/run/postgresql/.s.PGSQL.5432\": لا يوجد مثل هذا الملف أو الدليل

هل الخادم يعمل محليًا ويقبل الاتصالات على هذا المقبس؟

المهام: TOP => db:create
(انظر التتبع الكامل عن طريق تشغيل المهمة مع --trace)

حاولت مع .env

DISCOURSE_DB_HOST=127.0.0.1
DISCOURSE_DB_USERNAME=postgres
DISCOURSE_DB_PASSWORD=mysecretpassword

حاولت أيضًا باستخدام عناوين IP مختلفة لـ ‘DB_HOST’، لكنني ما زلت أتلقى نفس الخطأ.
هل هناك شيء فاتني؟

لست متأكدًا، لكن أعتقد أن المشكلة قد تكون أن Discourse يعمل داخل حاوية Docker، وبالتالي لا يمكنه افتراضيًا الوصول إلى حاوية PostgreSQL المنفصلة الخاصة بك.

أعتقد أنك بحاجة إلى كشف قاعدة البيانات باستخدام هذا النوع من التكوين GitHub - discourse/discourse_docker: A Docker image for Discourse

قد تحتاج أيضًا إلى إزالة قالب postgres من ملف app.yml.

هذه المستندات قد تكون مفيدة - بينما لا تعمل على خادم منفصل، يجب أن يكون كل شيء آخر ذا صلة.

آمل أن يساعد هذا!

مرحباً @phil22

شكراً على ردك.

لا يعمل Discourse داخل حاوية Docker، بل يعمل على نظام التشغيل الخاص بي. يعمل Postgres داخل حاوية، وقمت بتعريض منفذه لنظام التشغيل -p 5432:5432.

هذا يعني أن Discourse يحاول الاتصال عبر مقبس نظام الملفات وهذا المقبس غير موجود.

هل يمكنك محاولة إضافة port: 5432 إلى الملف config/database.yml، ضمن قسم التطوير؟

مرحباً @Falco
شكراً على ردك.
نفس الشيء

فشل الاتصال بالخادم على المقبس " / var / run / postgresql / .s.PGSQL.5432 ": لا يوجد مثل هذا الملف أو الدليل
هل الخادم يعمل محليًا ويقبل الاتصالات على هذا المقبس؟
تعذر إنشاء قاعدة بيانات 'discourse_development'. يرجى التحقق من التكوين الخاص بك.
تم إلغاء تشغيل Rails!
ActiveRecord::NoDatabaseError: فشل الاتصال بالخادم على المقبس " / var / run / postgresql / .s.PGSQL.5432 ": لا يوجد مثل هذا الملف أو الدليل
هل الخادم يعمل محليًا ويقبل الاتصالات على هذا المقبس؟


السبب:
PG::ConnectionBad: فشل الاتصال بالخادم على المقبس " / var / run / postgresql / .s.PGSQL.5432 ": لا يوجد مثل هذا الملف أو الدليل
هل الخادم يعمل محليًا ويقبل الاتصالات على هذا المقبس؟

المهام: TOP => db:create
(انظر التتبع الكامل عن طريق تشغيل المهمة مع --trace)

حسنًا، حاول إضافة هذا السطر:

  url: postgresql://postgres::postgres@localhost:5432/discourse_development?pool=5

بدلاً من سطر port.

شكراً @Falco
لقد حاولت إضافة جميع المعلومات المفقودة إلى database.yml، والآن يعمل

#cat database.yml
development:
  prepared_statements: false
  adapter: postgresql
  database: <%= ENV['DISCOURSE_DEV_DB'] || 'discourse_development' %>
  min_messages: warning
  port: 5432
  host: localhost
  user: postgres
  password: mysecretpassword
  pool: 5
  timeout: 5000

هل هذا يعني أن هناك مشكلة في تحميل متغيرات التكوين؟

لا، هذا يعني فقط أن socket الافتراضي له الأولوية على تعريف port. إحدى الطرق للتغلب على ذلك هي استخدام المفتاح url، ولكن يمكنك التحقق من كود Rails لمعرفة طرق أخرى.

إعجابَين (2)