این راهنما یک دیتابیس مدیریتشده میسازد، دسترسی محلی را با tunnel بررسی میکند و اطلاعات اتصال را از طریق متغیر محیطی به App میدهد.
پیشنیازها
- ورود به CLI و انتخاب پروژه
- یک App موجود در همان پروژه
- client مناسب موتور دیتابیس برای آزمون اتصال محلی
۱. دیتابیس را بسازید
در حالت تعاملی، CLI موتور، نسخه و plan را میپرسد:
abrun db create app-dbبرای نمونه، میتوانید موتور را مشخص کنید و انتخاب نسخه و plan را تعاملی انجام دهید:
abrun db create app-db --engine postgresرمز اولیه فقط هنگام ساخت نمایش داده میشود. آن را در password manager یا secret store امن ذخیره کنید و terminal را در زمان ساخت share نکنید.
وضعیت دیتابیس را تا فعالشدن بررسی کنید:
abrun db inspect app-db۲. اطلاعات اتصال را بخوانید
نمایش عادی credentialها رمز را پنهان نگه میدارد:
abrun db credentials app-dbفقط وقتی واقعاً به رمز نیاز دارید و محیط terminal خصوصی است، آن را آشکار کنید:
abrun db credentials app-db --show-passwordخروجی شامل host، port، databaseName، username و password است. این مقادیر را در issue، مستندات یا repository کپی نکنید.
۳. اتصال محلی را با tunnel بررسی کنید
یک پورت آزاد محلی انتخاب کنید:
abrun db tunnel app-db --port 5432تا زمانی که این command در حال اجرا است، client محلی را به 127.0.0.1:5432 وصل کنید و username، password و database name مرحله قبل را بدهید.
برای PostgreSQL:
psql 'host=127.0.0.1 port=5432 dbname=<database> user=<username>'client رمز را جداگانه میپرسد؛ آن را داخل command قرار ندهید.
برای MySQL، port آزاد مناسب خود را به tunnel بدهید و client را مجبور به TCP کنید:
abrun db tunnel app-db --port 3306
mysql --protocol=TCP --host=127.0.0.1 --port=3306 --user=<username> --password <database>گزینه --password بدون مقدار باعث میشود client رمز را امنتر درخواست کند.
برای Redis:
abrun db tunnel app-cache --port 6379
redis-cli -h 127.0.0.1 -p 6379 --user <username> --askpass PINGاز قرار دادن password در -a یا URI خط فرمان خودداری کنید. در هر سه حالت، با Ctrl+C فرایند tunnel را ببندید.
۴. اطلاعات اتصال را به App بدهید
نام متغیر به framework برنامه بستگی دارد. اگر برنامه از DATABASE_URL استفاده میکند، URL را محلی بسازید و مقدار واقعی را بهجای placeholderها قرار دهید:
postgres://<username>:<password>@<host>:<port>/<database>سپس آن را تنظیم کنید:
abrun app env set <app> 'DATABASE_URL=<connection-url>'این command ممکن است در history شل باقی بماند. برای production و CI، مقدار را از secret store وارد کنید و از hard-code کردن آن بپرهیزید. جزئیات بیشتر در متغیرهای محیطی آمده است.
۵. نتیجه را بررسی کنید
پس از اعمال متغیر، وضعیت و لاگ برنامه را بررسی کنید:
abrun app inspect <app>
abrun app logs <app> --tail 100یک endpoint یا عملیات واقعی برنامه را اجرا کنید که به دیتابیس query میزند. فعالبودن App بهتنهایی ثابت نمیکند اتصال دیتابیس درست است.
رفع مشکل
connection refused: host و port را دوباره از credentialها بخوانید؛ برای اتصال محلی tunnel باید همچنان باز باشد.authentication failed: username، password و database name را بدون فاصله اضافه بررسی کنید.- App به دیتابیس نمیرسد: مطمئن شوید هر دو resource در یک پروژه هستند و متغیر روی App درست تنظیم شده است.
- تغییر دیده نمیشود: لاگ runtime را بررسی و در صورت نیاز App را restart کنید.