0Pricing
Go Academy · درس

إعدادات البيئة والأسرار

إعدادات Twelve-factor ومتغيرات البيئة وأسرار Docker

إعدادات البيئة والأسرار درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

إعداد تطبيق 12-factor

توصي منهجية تطبيق 12-factor بتخزين الإعداد في متغيرات البيئة، لا في التعليمات البرمجية أو ملفات الإعداد. ويجعل ذلك التطبيق قابلًا للنقل بين بيئات التطوير والاختبار والإنتاج دون تغيير التعليمات البرمجية.

os.Getenv

اقرأ متغيرات البيئة باستخدام os.Getenv (يعيد "" إذا لم يكن المتغير مضبوطًا) أو os.LookupEnv (يعيد القيمة وقيمة منطقية تشير إلى وجود المتغير):

port := os.Getenv("PORT")
if port == "" { port = "8080" }

dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }

تحميل ملفات .env

استخدم github.com/joho/godotenv لتحميل ملفات .env في بيئة التطوير. في الإنتاج، أدخل متغيرات البيئة عبر المنصة (Docker، Kubernetes، والسحابة).

godotenv.Load() // loads .env if present; ignores error in prod

إعدادات منظّمة باستخدام envconfig

يربط github.com/kelseyhightower/envconfig متغيرات البيئة بحقول البنية مع تحويل الأنواع والتحقق من الصحة:

type Config struct {
    Port     int    `envconfig:"PORT"    default:"8080"`
    DBUrl    string `envconfig:"DB_URL"  required:"true"`
    LogLevel string `envconfig:"LOG_LEVEL" default:"info"`
}
var cfg Config
envconfig.MustProcess("", &cfg)

إدارة الأسرار

لا تخزّن الأسرار (كلمات المرور ومفاتيح API وشهادات TLS) في متغيرات البيئة في الإنتاج — إذ تظهر في قوائم العمليات والسجلات. استخدم مديرًا للأسرار، مثل AWS Secrets Manager أو HashiCorp Vault أو Kubernetes Secrets المثبّتة كملفات.

قراءة الأسرار من الملفات

ثبّت الأسرار كملفات واقرأها عند بدء التشغيل:

secret, err := os.ReadFile("/run/secrets/db_password")
if err != nil { log.Fatal(err) }
dsn := fmt.Sprintf("postgres://user:%s@host/db", strings.TrimSpace(string(secret)))

أسرار Kubernetes

في Kubernetes، ثبّت قيم Secret كمتغيرات بيئة أو كملفات في وحدة تخزين. يُفضَّل تثبيت الملفات، إذ يمكن تدويرها دون إعادة تشغيل الـ pod.

أعلام الميزات

خزّن أسماء أعلام الميزات في متغيرات البيئة للتبديلات البسيطة بين التشغيل والإيقاف. أما قواعد الأعلام المعقدة (التوزيع بنسب مئوية والاستهداف)، فاستخدم لها خدمة مخصصة لأعلام الميزات.

التحقق من الإعدادات عند بدء التشغيل

تحقّق من صحة جميع الإعدادات المطلوبة عند بدء التشغيل، وأوقف التنفيذ فورًا إذا كان أي شيء مفقودًا أو غير صالح. من الأفضل أن يتعطل التطبيق فورًا بدلًا من أن يفشل عند أول طلب.

if cfg.DBUrl == "" { log.Fatal("DB_URL required") }

إعدادات غير قابلة للتغيير

اعتبر الإعدادات غير قابلة للتغيير بعد بدء التشغيل. إذا احتجت إلى تحديثات مباشرة للإعدادات، فاستخدم خدمة لأعلام الميزات أو مخزن إعدادات يوفر آلية مراقبة، بدلًا من إعادة تحميل متغيرات البيئة تلقائيًا.

الإعدادات في الاختبارات

استخدم t.Setenv لتعيين متغيرات البيئة طوال مدة الاختبار. هذا آمن للاختبارات المتوازية في Go 1.17 والإصدارات الأحدث.

t.Setenv("PORT", "9090")
// test code here...

تحقق سريع

لماذا ينبغي عدم تخزين الأسرار في متغيرات البيئة في الإنتاج؟

مراجعة: إعدادات البيئة والأسرار

النقاط الأساسية:

  • خزّن الإعدادات في متغيرات البيئة؛ واستخدم godotenv لملفات .env في التطوير المحلي
  • استخدم envconfig لتعبئة حقول البنية المعرّفة بالأنواع مع القيم الافتراضية
  • ثبّت الأسرار كملفات؛ واستخدم Vault/Secrets Manager في الإنتاج
  • تحقّق من صحة جميع الإعدادات عند بدء التشغيل؛ وأوقف التنفيذ فورًا إذا كان أي شيء مفقودًا

الأسئلة الشائعة

هل درس «إعدادات البيئة والأسرار» مجاني؟

نعم — نص درس «إعدادات البيئة والأسرار» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «إعدادات البيئة والأسرار»؟

إعدادات Twelve-factor ومتغيرات البيئة وأسرار Docker تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «إعدادات البيئة والأسرار»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بناء Docker متعدد المراحل لـ Go
  2. إعدادات البيئة والأسرار
  3. ‏Docker Compose للتطوير المحلي
  4. فحوصات الصحة والضبط للإنتاج
← العودة إلى Go Academy