اتصال دیسکورس به کانتینر های موجود


#1

با درود خدمت دوستان عزیز و همینطور اساتید محترم .

من در پروژه خودم بخشی از انجمن ساز دیسکورس استفاده می کنم. که به دیتابیس این انجمن ساز یک کانیتنر الکسیر هم باید متصل شود.

روش نصب دیسکورس :

مثل اینکه این کانتینر آماده شده یک روشی استفاده می کنه که چند مشکل دارم

میخوایم با استفاده از Dockerfile خوده discourse یک کانتینر درست کنم . بعد که می خواهم ران کنمش به دیتابیس postgres و ایمیل و پروکسی که همون nginx خودمون هست و کانفیگ کردیم وصلش کنم.

چون به صورت پیشفرض وصل می شه متاسفانه روی پرت ۸۰ هست . چندتا چیز تغییر دادم ولی هر بخش باز ارور می گیره

علاوه بر مشکل بالا که اگر راهنمایی کنید ممنون می شم یک سوالی هم در این رابطه دارم شما فکر می کنید با این راه تغییری که من دارم انجام می دم اصولی هست . باید از همین روند برم جلو یا بیام تک به تک کانتینر های روبی و … رو نصب کنم که واقعا خیلی کار می بره ؟


#2

هدف اصلی از این اتصال چیه؟
راهی وجود داره که با استفاده از data warehouse دیسکورس رو سینک کنی؟


#3

درود توماج جان .

هدف های ما از اتصال به این شرح هست :

۱. برای پرت ها : خود داکر دیسکورس پرت های اصلی رو اشغال می کنه که که قبلا با انجینیکس پر-وک-س-ی کردیم پس باید پرت هاش تغییر بکنه چون قبلا روی سرور اون پرت ها هست و ممکنه چندتا دیسکورس دیگه هم نصب بشه

۲. اتصال به کانتینر دیسکورس : بخاطر اینکه بنده روبی بلد نیستم . می خوام با یک کانتینر الکسیر به همون دیتابیس خود دیسکورس نصب شم و مواردی مثل

  • هرکی در سایت فونیکسم ثبت نام کرد در بک گراند در سایت دیسکورس ثبت نام بشه و برعکس
  • بتونم ازش اطلاعات پست ها رو بگیرم تا بتونم نقشه سایت خودمو یک پارچه بسازم برای سئو سایت ( اون چیزی که مدنظرمه )
  • قرار هست هرکی در سایت قسمت فونیکس زیر پست نظر می ده من اون رو کمی ویرایش و به عنوان پست در انجمن بفرستم و زیر همون مطلب هم اون پست رو بیارم که بازم نیازه متصل به دیتابیس باشم .

و موارد دیگیری که نیاز دارم از دیتابیس دیسکورس بگیرم و بهش بدم . به همین منظور نیازمند به اتصال هستم . مشکل اول که مربوط به پرت هاست که واقعا باید حل بشه من اگر ۵ تا دیسکورس بیارم روی سرورم باید همشون تغییر پرت بکنند و موارد مشکل دوم که خدمت شما توضیح بیشتر دادم


لازم به ذکر هست در مورد data warehouse فرمودید باید بگم تا اونجایی که تو دانشگاه خوندم و هیچ وقت هم پیاده سازی نکردم فکر کنم پایگاه داده تحلیلی باشه بیشتر برای بیگ دیتا و اطلاعات قدیمی و آرشیو شده برای مباحث دیتاماینینگ تاحالا این رو اصلا هیج جا پیاده سازی نکردم نمی دونم برام چه کاربردی داره ولی در آینده برای یک اپلیکیشن پزشکیم فکر کنم نیازمندم چون اطلاعات روزانه زیادی درست می شه و باید نسخه ای از اون آرشیو بشهدر جای دیگه تا بشه براش یک آنالیز داده مناسبی کرد .

ممنون :rose:


#4

شهریارجان
برای ساخت کاربر بجای دسترسی مستقیم به دیتابیس دیسکرس نمیشه یک http request بفرستی به سرپردیسکرس؟
یک post request به endpoint که کاربر میسازه در برنامه دیسکرس


#5

درود خدمت سام عزیز .

ولاه بحث فقط ساخت کاربر نیست . به مرور امکاناتی که نیاز دارم مثل ساخت برچسب بعد از ارسال هر محتوا در سایت فونیکس و همینطور در آوردن برخی اطلاعات برای هر پستم در فونیکس که مرتبط هست با پست در دیسکورس و همینطور آزادی خودم در اعمال ایده های جدید.

من هدف اصلیم این بود کانتینری که وسط سایت فونیکس با دیسکورس هست . فقط روی شبکه داخلی دسترسی داشته باشند و همینطور به مرور خیلی امکانات دیگری رو هم بهش بدم . من برخی از api های دیسکورس رو دیدم . همه چیز رو استخراج نمی کنه .من یک ادمین رو می خوام شروع کنم که به تمام اطلاعات تمام وب سرویس هام و کانتینر هام دسترسی داره که هر کدومشون باز مستقل هستند .

ولی برای لاگین شدن که قبلا با شما صحبت کردم که بحث دیگیری هست مثلا اینکه باید حتما در خود دیسکورس پلاگین نوشت نیاز به روبی کار داره .

جمع بندی اینکه من بتونم تمام کارامو با الکسیر بکنم و درگیر روبی نشم در آینده


#6

اگر نمیشه از api دیسکرس استفاده کنی یک کاربر در دیتابیس درست کن مخصوص برنامه الیکسیر که به دیتابیس دیسکرس دسترسی داشته باشه
با این حال هنوز به نظر من ساختن api برای دیسکرس مختص کارهایی که میخواهی روش اصولی تری هست اما بعضی وقت ها نمیشه راه اصولی رفت


#7

تقریبا متوجه شدم هدف چیه، راستش تنها راه درست انجام این کار همونیه که @samdvr گفت.
و با توجه با اینکه قراره کار در آینده پیچیده تر هم بشه بهتره از همین الان سرویسها/ماژلها و دیتا بیس ها از هم جدا باشند.


#8

توماج جان متاسفانه مستقل شدنش نیاز به روبی کار داره که پلاگین کامل برای دیسکورس بنویسه . ولی بجای پلاگین من درنظر گرفتمیک کانتینر الکسیر به این پروژه بدم به عنوان api کار کنه برای همه . فقط فرقش با پلاگین روی دسکورس اینکه یک کانتینر جداست که به دیتابیس دیسکورس ارتباط داره

اینجوری هم من دوباره مشغول یادگیری زبان دیگه نمی شم
و هم با تغییرات روی سیستم می تونم سریع به روز بشم.

به نظرتون این کار در شرایط من بهتر نیست ؟ که روبی بلد نیستم ؟

راستی حتما یک پست در آینده می زنم در مورد دیتاور هاست که ذهن منو مشغول کرده البته بعد از حل این مشکل :sweat_smile:


#9

تاجایی امکان داره باید به ساده و قابل درک بودن سیستم فکر کرد وگرنه هر تغییر کوچکی در آینده تبدیل به کابوس میشه و یک تصمیم اشتباه میتونه کل پروژه رو به خطر بندازه


#10

بنظر نمیاد نیازی به نوشتن پلاگین باشه


#11

دیسکورس با هر کاربر می شه یک پست ارسال کرد . در صورتی که من به عنوان مدیر می خوام به واسطه api پست و برچسب بسازم .

به عنوان مثال ما دو بخش داریم

۱. سایت با کانتینر فونیکس
۲. انجمن داریم با کانتینر دیسکورس

حالا یکی در شماره ۱ که سایت باشه یک نظری زیر یکی از پست های من می فرسته . این نظر می یاد در بخش مدیریت سایت فونیکسم ویرایش می شه تیتر می گیره به اسم همین کاربر ارسال می شه به انجمن دیسکورس

حالا در سایت فونیکس سوالاتی که مربوط به اون پست به عنوان نظر هست یک تیتر و لینک و توضیحات کوتاهش قرار می گیره که کسی زد به دیسکورس انتقال پیدا کنه .

به همین ترتیب کاربر مستقیمابه دیسکورس اطلاعات نمی فرسته بلکه من به عنوان مدیر با اسم و یوزر کاربر دارم می فرستم .

نمی دونم تونستم کامل منظورمو برسونم .


#12

اگر زیادی سطحی به موضوع نگاه نکرده باشم فقط یه api controller خیلی ساده سمت دیسکورس لازم داری


#13

خوب همین مورد فرمودید باید چطور انجام داد؟


#14

هر user میتونه یک universally unique identifier در هر دوسمت داشته باشه, بعد ریلز و فینکس با استفاده از اون identifier کاری که گفتی رو انجام بدن.
من سعی میکنم از id استفاده نکنم, میتونی یک string attribute با اسم identifier به یوزر بدی و index لازم رو هم براش ایجاد کنی. اینطوری اگر لازم باشه میتونی یوزر ها رو به راحتی سینک کنی.
منظورم از attribute یک column توی db بود


Concurrently در postgresql چه معنی می دهد ؟
#15

UUID هم گزینه خوبیه برای identifier


Concurrently در postgresql چه معنی می دهد ؟
#17

اصلا باید UUID باشه که اسمش هم بهتره همون uuid باشه.


#18

اینجوری من متوجه شدم منظور شما اینکه من در هر دو بخش باید دیتابیس داشته باشم یعنی تو دیسکورس باید یک تیبلی اضافه کنم تا UUID توش ذخیره بشه درسته ؟


#19

خیر! دقیقا عرض کردم یک column روی users
+
unique index

SecureRandom.uuid


#20

با این ایده که جهت ثبت نام دوطرفه باشه زیاد موافق نیستم, اما اگر قراره اینطور باشه سعی کن ثبت نام به سرویس خارجی asynch باشه


#21

اینم یه لینک برای uuid extermination