كيفية إعداد عامل الميناء لتطبيقات Symfony 4

Docker + Symfony = <love>

اعتدت عادةً على تطوير مشاريع Symfony الخاصة بي محليًا ، وتثبيت جميع التبعيات وإدارة كل التهيئة بنفسي (نعم ، أنا أعلم أن بعض الأشخاص قد يبدو الأمر مجنونًا).

لقد كان جهاز الكمبيوتر المحمول الذي أستخدمه بشكل خاص وللتطوير دائمًا مليئًا بالتبعيات غير الضرورية التي تعمل في الخلفية.

في كل مرة يتم فيها إصدار إصدار جديد من التبعية المثبتة أو ترقية نظام التشغيل Mac ، احتجت إلى الحفاظ على جميع إعدادات كل خدمات الجهات الخارجية.

كان علي أن أتأكد من أن كل شيء سار على ما يرام. لقد كان مضيعة للوقت حقًا ، ولم يكن فعالًا وألمًا في المؤخرة معظم الوقت. الشيء الإيجابي على الأقل هو أنني تعلمت كيفية تثبيت وتكوين هذه التبعيات التي تعمل محليًا على جهاز Mac .

ثم جاء عامل الإنقاذ.

يعرف معظم المطورين ما هو Docker ، لكن ليس كلهم ​​يستخدمونه. أفترض أنك تعرف بالفعل ما هو Docker وأنت تعمل على جهازك.

في هذه المقالة ، سأشرح باختصار كيفية تكوين Docker على MacOS لاستخدامه مع مشروع Symfony 4 الجديد أو الحالي الذي يعمل على Nginx و PHP-FPM و PostgreSQL.

قبل أن نبدأ ...

دعونا نتذكر بعض المعلومات.

ما هي منصة دوكر؟

بالمختصر:

منصة Docker هي منصة الحاوية الوحيدة لبناء وتأمين وإدارة أوسع مجموعة من التطبيقات من التطوير إلى الإنتاج في أماكن العمل وفي السحابة. - docker.com

إنه يحتوي على الكثير من الميزات والمزايا التي لن أغطيها في هذه المقالة حيث يمكن العثور عليها جميعًا على موقع docker.com الرسمي.

كيفية تثبيت عامل الميناء؟

Docker هي أداة متعددة المنصات يمكن تثبيتها على أنظمة Windows و MacOS و Linux.

لمعرفة المزيد حول كيفية تثبيته ، اتبع مستندات Docker الرسمية.

عامل الميناء يؤلف

لغرض هذا المثال ، سأستخدم Docker Compose.

يُعد "إنشاء" أداة لتحديد وتشغيل تطبيقات Docker متعددة الحاويات.

قراءة المزيد عن Docker يؤلف في Docker يؤلف الوثائق.

ما هو دوكرفيل؟

Dockerfile هو ملف نصي بسيط يحتوي على تعليمات / أوامر تستخدم لبناء صورة بواسطة Docker (يمكنك تحديد أوامر خاصة ويحدث كل السحر في الخلفية عند تشغيل أمر docker build).

يمكنك قراءة المزيد عنها في Dockerfile Reference Docs.

إعداد تطبيق Symfony 4 مع Docker

في هذا القسم ، سوف أصف كيفية إعداد Docker لتشغيل تطبيق Symfony 4. في هذه الحالة ، سيتم استخدام Docker لتشغيل جميع الخدمات مثل Nginx و PostgreSQL و PHP-FPM. يجب أن يكون رمز تطبيق Symfony 4 موجودًا على جهازك المحلي.

لنبدأ!

1. قم بإنشاء مجلد "عامل ميناء" داخل دليل جذر تطبيق Symfony الخاص بك

سيحتوي هذا المجلد على جميع ملفات التكوين المطلوبة بواسطة Docker.

لنفترض أن تطبيق SF4 الخاص بك موجود في / home / rafal / symfony_app.

يجب إنشاء مجلد عامل الميناء مثل: / home / rafal / symfony_app / docker.

2. إنشاء Docker يؤلف ملف التكوين

لنقم بإنشاء ملف docker-compose.yaml داخل دليل عامل الميناء الذي تم إنشاؤه في الخطوة 1.

هذا ملف تكوين يستخدمه Docker Compose حيث يمكنك تحديد خدماتك والعلاقات بينها وأكثر من ذلك.

سيتم تشغيل تطبيق Symfony 4 الخاص بك داخل حاوية Docker باستخدام أحدث محرك قاعدة بيانات PHP-FPM 7.2 و Nginx و PostgreSQL.

سيبدو ملف التكوين المثال كما يلي:

هناك ثلاث خدمات محددة في هذا الملف: postgres و php و nginx.

ستستخدم خدمة Postgres صورة Docker Postgres الافتراضية من Docker Hub وستظهر على المنفذ 5433 على جهازك المحلي ، داخليًا (داخل حاوية Docker) ، سيتم تشغيلها على المنفذ الافتراضي 5432.

سيتم كشف خدمة Nginx على المنفذ 8080 وستكون قادرًا على الوصول إليها باستخدام متصفحك على ذلك المنفذ. يربط خدمة php من أجل تنفيذ ملفات PHP بفضل PHP-FPM.

هناك أيضًا وحدة تخزين تم إنشاؤها والتي ستقوم "بتخطيط" / var / log / nginx directory من حاوية Docker إلى جهازك المحلي. في هذه الحالة ، سيكون: / home / rafal / symfony_app / docker / logs / nginx الدليل الذي ستتمكن من عرض سجلات خادم الويب Nginx منه.

ستستخدم خدمة PHP-FPM ملف التكوين من دليل php-fpm الذي تم إنشاؤه في الخطوات التالية. سيكون المنفذ المكشوف 9002 على مضيفك المحلي.

هناك أيضًا مجلدين محددين لخدمة php-fpm. أول واحد ../:/var/www/symfony: مخبأ ، "خرائط" تطبيق Symfony المحلي الخاص بك إلى / var / www / symfony داخل حاوية Docker حتى يمكن تنفيذ كود PHP بواسطة الخدمات التي تم تكوينها.

مستوى الصوت / symfony في هذه الحالة. بفضل هذا يمكنك قراءة جميع سجلات SF التي يتم إنشاؤها عند تشغيل داخل حاوية Docker.

3. إنشاء ملف التكوين PHP-FPM

لإنشاء صورة PHP-FPM ، نحتاج إلى إنشاء ملف تكوين Dockerfile.

داخل دليل عامل الميناء الذي تم إنشاؤه في الخطوة 1 ، قم بإنشاء دليل فرعي aphp-fpm.

بداخله ، قم بإنشاء ملف Dockerfile مع المحتوى:

سوف تحتوي هذه الصورة على جميع امتدادات PHP المطلوبة لتشغيل تطبيق SF4 بما في ذلك الملحن.

يجب أن تبدو بنية الدليل هكذا الآن:

الشكل 1. هيكل دليل تكوين عامل الميناء مع PHP-FPM.

4. إنشاء ملف التكوين Nginx

لجعل الهيكل أكثر نظافة ، فلنقم بإنشاء دليل nginx داخل عامل الإرساء أولاً.

داخل دليل nginx ، دعونا ننشئ ملف تكوين Dockerfile لخادم Nginx. بفضل هذا الملف ، سيكون بإمكان Docker إنشاء صورة Nginx التي سيتم استخدامها لخدمة تطبيق Symfony 4 الخاص بنا على الويب.

سيبدو محتوى هذا الملف على النحو التالي:

يحدد الملف أعلاه أنه يجب تثبيت أحدث إصدار من خادم Nginx ، ويجب استخدام المحتوى من ملف default.conf كتهيئة خادم Nginx رئيسية.

لنقم بإنشاء ملف thedefault.conf الذي تم تكوينه لخدمة تطبيق Symfony 4 داخل حاوية Docker بواسطة Nginx:

يجب أن تبدو بنية الدليل هكذا الآن:

الشكل 2. هيكل دليل تكوين عامل الميناء مع تكوينات PHP-FPM و Nginx.

انظر أدناه بنية الدليل حيث سيتم تحديد موقع جميع ملفات التكوين:

الشكل 3. هيكل دليل التكوين النهائي عامل الميناء.

5. بناء الصور

الآن ، إذا كان لدينا جميع ملفات التكوين في مكانها ، فقد حان الوقت لبناء الصور.

للقيام بذلك ، داخل دليل عامل ميناء قم بتشغيل الأمر التالي في محطة الخاص بك:

عامل بناء الإنشاء

سيقوم Docker بتنزيل جميع الملفات المطلوبة وسيعمل على إنشاء صور PHP-FPM و Nginx و PostgreSQL والتي ستتمكن من تشغيلها لاحقًا.

6. قم بتشغيل تطبيق Symfony 4 باستخدام Docker

لتشغيل التطبيق ، داخل دليل عامل ميناء قم بتشغيل الأمر في محطة الخاص بك:

عامل ميناء يؤلف يصل د

ستبدأ حاويات Docker بناءً على الصور التي تم إنشاؤها مسبقًا. في المحطة يجب أن ترى شيئًا كهذا:

نجاح! يتم تشغيل التطبيق الخاص بك الموجود على جهازك المحلي (/ home / rafal / symfony_app) داخل Docker باستخدام صور Nginx و PostgreSQL و PHP-FPM التي تم تكوينها.

7. كيفية الوصول إلى تطبيق Symfony 4 من داخل Docker؟

يتعرض خادم الويب على المنفذ 8080 على جهازك المحلي. حتى تتمكن من الوصول إليه ، يجب عليك الانتقال إلى عنوان url: http://127.0.0.1:8080 في متصفحك على نظام MacOS (على نظام Windows يجب عليك استخدام localhost بدلاً من 127.0.0.1).

أكثر…

كيفية تشغيل الأوامر داخل حاويات دوكر؟

لتشغيل أمر وحدة التحكم داخل Docker ، قم بتنفيذ الأمر التالي في الجهاز الطرفي:

عامل ميناء يؤلف تشغيل تثبيت الملحن php

سيتم تنفيذ الأمر أعلاه على حاوية php حيث يمكننا الوصول إلى خدمة PHP-FPM والملحن.

لتشغيل أي أمر آخر:

عامل إنشاء - تشغيل php بن / وحدة عقيدة: المخطط: تحديث - فرض

خاتمة

عامل الميناء هو أداة قوية حقا.

يزيد من إنتاجيتك ويمنحك الكثير من التحكم في الخدمات التي ترغب في استخدامها.

لا تتردد وحاول استخدامه الآن إذا لم تكن بالفعل!

شخصيا ، لا أستطيع أن أتخيل العمل بدون عامل الميناء في الوقت الحاضر ويمكنني أن أوصي به لأي شخص!

إذا كنت بحاجة إلى نشر تطبيق Symfony 4 بسرعة للإنتاج ، أوصي باستخدام أحد خوادم VPS الرخيصة بواسطة DigitalOcean. من خلال التسجيل من هنا ، ستحصل على رصيد مجاني بقيمة 10 دولارات للقطرة.

قبل ان تذهب…

إذا كنت تحب هذه المقالة ، فانقر فوق علامة "أدناه" حتى يراها الآخرون هنا على "متوسط".

نشرت أصلا في blog.rafalmuszynski.pl.