توقف عن كتابة أوامر docker run - استخدم Docker Compose بدلًا من ذلك
أغلب أوامر docker run تتحول إلى مزيج من الأعلام غير القابل للصيانة. يوضح هذا الدليل كيفية تحويل أوامر docker run إلى docker compose - مع جدول مرجعي للأعلام، مثال حقيقي للتحويل، وأداة تحويل مجانية.
تبدأ كل عملية Docker بنفس الطريقة: docker runأول علم، اثنين من العلامات — يمكن التحكم بها. ولكن بحلول الوقت الذي تبدأ فيه تشغيل حاوية بمعاينة، ومتغيرات بيئة، وحجم تخزين، وسياسة إعادة التشغيل، وشبكة مخصصة، يصبح هذا الأمر 400 حرف من شيء لا يمكن تذكره، ولا يمكن تضمينه في نظام إدارة النسخ، ولا يمكن إعطاؤه لزميلك دون تبادل شرط على وسيلة مثل سلوك سلاك يحمل شعوراً بالذنب.
يُعد Docker Compose الحل. ملف يوالي واحد يُستبدل بالكامل للتعليمات — وينتقل إلى جيت.
لماذا توقفت عملية docker run عن التوسع
إليك أمر معياري docker run للتطبيق Node.js:
docker run -d \
--name my-app \
-p 3000:3000 \
-e NODE_ENV=production \
-e DATABASE_URL=postgres://user:pass@db:5432/mydb \
-v ./data:/app/data \
--network app-network \
--restart always \
my-app:latest
يُعمل. مرة واحدة. ثم تغلق الطرف، تفتح طرفًا جديدًا بعد ثلاث أسابيع، وستكون غير معرفة بعلامات الاستخدام التي استخدمتها. لا يوجد شيء لـ git diff. لا يوجد شيء يمكن مشاركته مع مُوظف جديد. لا طريقة لضمان أن بيئة التجريب تتطابق مع الإنتاج.
ما يوفره Docker Compose
يأخذ كل ما تم وضعه في تلك docker run أوامر وينسخها إلى ملف يوالي يُسمى docker-compose.yml. هذا الملف:
- يوجد في مخزنك بجانب الكود
- يُشغل بسلاسل بسيطة
docker compose up -d - يُشغل بنفس الطريقة على كل جهاز وبيئة
- يمكنه التوسع لتركيبات متعددة الخدمات (تطبيق + قاعدة بيانات + ذاكرة مؤقتة) دون ممارسة مهارات متعددة للعلامات
كيف تحول أمر docker run
أصبح هذا الأمر نفسه docker-compose.yml:
version: "3.9"
services:
my-app:
image: my-app:latest
container_name: my-app
ports:
- "3000:3000"
environment:
NODE_ENV: production
DATABASE_URL: postgres://user:pass@db:5432/mydb
volumes:
- ./data:/app/data
networks:
- app-network
restart: always
networks:
app-network:
نفس السلوك. ولكن الآن يمكن قراءته، وتسجيله، وتحقيقه بشكل مكرر.
ابدأ التشغيل:
docker compose up -d
أوقف التشغيل:
docker compose down
أعلام docker run إلى مفاتيح docker-compose.yml
مراجع للاختيارات التي تستخدمها بانتظام:
| أعلام docker run | مفتاح docker-compose.yml | مثال |
|---|---|---|
-p 8080:80 | ports: | - "8080:80" |
-e FOO=bar | environment: | FOO: bar |
-v ./data:/data | volumes: | - ./data:/data |
--network mynet | networks: | mynet |
--restart always | restart: | always |
--name mycontainer | container_name: | mycontainer |
--memory 512m | mem_limit: | 512m |
--cpus 1.5 | deploy.resources.limits.cpus | cpus: "1.5" |
-d | استخدم -d أعلام التشغيل أثناء التشغيل | docker compose up -d |
تحويل تلقائي
إذا كان لديك أمر طويل موجود منذ البداية docker run أو أمر ورثته من وثيقة مقدمة أو من سكربت تكامل تمت تجربته منذ سنتين — لا تحتاج إلى تطابق كل علامة يدويًا. استخدم مُحول تشغيل Docker إلى Docker Compose: انسخ الأمر، احصل على نسخة صحيحة docker-compose.yml مخرج.
يتعامل مع المعايير، المتغيرات البيئية، الحوافز، الشبكات، سياسات إعادة التشغيل، وغيرها. مفيد لتحويل أوامر قديمة دون إدخال أخطاء أثناء التحويل.
إذا كنت تُحدِّد حدود الموارد في ملف Compose، فإن حاسبة موارد حاوية Docker يساعدك في اختيار قيم مناسبة للاختصاصات والذاكرة بناءً على حجم الحمل — قبل أن تضع أرقامًا استخرجتها من فراغ.
فحص ملف Dockerfile أثناء التحديد
بمجرد أن تُرتّب ملف Compose، تحقق من ملف Dockerfile الذي يُبنى منه. صورات القواعد غير المُحددة، مفقودة WORKDIR، طبقات متكررة RUN أو طبقات غير ضرورية — هذه تُفوت بسهولة وتحاول التحقيق لاحقًا. يُكتشف ذلك من قبل مُدقق Dockerfile قبل أن يصبح مشكلة في الإنتاج.
تثبيت ملحقاتنا
أضف أدوات IO إلى متصفحك المفضل للوصول الفوري والبحث بشكل أسرع
恵 وصلت لوحة النتائج!
لوحة النتائج هي طريقة ممتعة لتتبع ألعابك، يتم تخزين جميع البيانات في متصفحك. المزيد من الميزات قريبا!
