Skip to Content
سکوی ابری (PaaS)متغیرهای محیطی

متغیرها و Secretها

کدام سطح را انتخاب کنیم؟

  • Project secret: مقداری مشترک برای چند محیط یا سرویس.
  • Environment variable: مقدار مخصوص production، staging یا preview.
  • Add-on binding: connection value تولیدشده توسط دیتابیس یا cache.
  • Service variable: مقدار مختص همان سرویس و دارای بالاترین اولویت.

در تعارض، ترتیب بالا از کم‌اولویت به پر‌اولویت است. نام کلیدها نمایش داده می‌شود اما مقدار Secret پس از ذخیره ماسک می‌شود.

Build-time در برابر Runtime

Build-time هنگام ساخت artifact در دسترس builder است؛ برای نمونه متغیری که bundler فرانت‌اند مصرف می‌کند. Runtime فقط هنگام اجرای process تزریق می‌شود و انتخاب مناسب‌تری برای credential است. متغیری که برنامه در startup می‌خواند پس از تغییر به deploy یا restart نیاز دارد.

Secret را در Git، Dockerfile، build argument عمومی، screenshot یا لاگ چاپ نکنید. اگر افشا شد، مقدار را در منبع اصلی rotate کنید و سپس سرویس را دوباره deploy کنید.

Reference variables

reference از کپی‌شدن مقدار و drift جلوگیری می‌کند و هنگام deploy resolve می‌شود:

DATABASE_URL=${{ Postgres.DATABASE_URL }} APP_KEY=${{ shared.APP_KEY }} PUBLIC_URL=https://${{ GERDOO_PUBLIC_DOMAIN }}

${{ shared.KEY }} از project secret، ${{ ServiceName.KEY }} از سرویس دیگر و ${{ KEY }} از context خود سرویس خوانده می‌شود. اگر reference حل نشد، نام سرویس، محیط، spelling کلید و وجود binding را بررسی کنید.

دو store در CLI

gerdoo service env نقشه ساده env را مدیریت می‌کند. gerdoo service vars انبار تایپ‌دار با گزینه‌های --build-time و --secret است. برای تنظیمات جدید، store تایپ‌دار انتخاب روشن‌تری است.