العودة إلى الدورة

الدرس 23: التعامل مع متغيرات البيئة والأسرار

Docker من الصفر إلى الاحتراف: الدورة الشاملة لتغليف التطبيقات (Containerization) للمبتدئين

الدرس 23: التعامل مع متغيرات البيئة والأسرار

تعتمد التطبيقات على التكوين، والذي غالباً ما يتم تمريره عبر متغيرات البيئة (بيانات اعتماد قاعدة البيانات، مفاتيح API). يوفر Docker عدة طرق لإدارة هذه المتغيرات.

1. تعريف المتغيرات في Dockerfile (ENV)

استخدم ENV لتعيين متغيرات بيئة ثابتة داخل الصورة.

dockerfile ENV APP_VERSION=1.0.0 ENV PORT=8080

2. تمرير المتغيرات في وقت التشغيل (docker run)

بالنسبة للبيانات الحساسة أو الديناميكية (مثل كلمات المرور)، لا تقم بترميزها الثابت في Dockerfile. مررها في وقت التشغيل باستخدام العلامة -e.

bash docker run -d \n -e DB_USER=production_user \n -e DB_PASS=supersecret! \n my-app:latest

3. استخدام ملف بيئة (--env-file)

بالنسبة للعديد من المتغيرات، يكون سردها كلها باستخدام -e مملاً. يمكنك استخدام ملف .env.

محتوى ملف prod.env:

ini DB_USER=prod_user API_KEY=xyz123abc

أمر وقت التشغيل:

bash docker run -d --env-file ./prod.env my-app:latest

4. إدارة بيئة Compose

يبسّط Docker Compose هذا باستخدام كتلة environment: (الدرس 18) أو ملفات .env الخارجية.

إذا كان لديك ملف .env خارجي في نفس الدليل مثل compose.yml، يقوم Compose بتحميله تلقائياً واستبدال المتغيرات المحددة في compose.yml الخاص بك:

جزء من compose.yml:

yaml services: web: image: my-app:latest environment: DB_USER: ${DB_USER} # أو قم بترميز متغير ثابت لهذه الخدمة فقط LOG_LEVEL: info

ملاحظة أمنية حول الأسرار: بالنسبة لأمان الإنتاج الحقيقي (أي عند استخدام Swarm أو Kubernetes)، لا تعتبر متغيرات البيئة آمنة تماماً. يوفر Docker إدارة مخصصة للأسرار (Secrets) (تخزين مشفر)، والتي سنذكرها باختصار في دروس التنظيم اللاحقة.