كيفية إنشاء تطبيقات ويب متعددة باستخدام Elixir بفضل المظلة - الجزء 2: إعداد المشروع

دليل (wannabe) لمعرفة كيفية إنشاء تطبيقات الويب باستخدام Elixir 1.9 و Phoenix 1.4 و Docker (للتطوير) و Git (بما في ذلك وحدات فرعية) لإصدار كل تطبيق ومكالمات PostgresQL و Redis و API ونشرها.

هذا الدليل موجه للمطورين الذين لديهم عدد قليل من المشروعات التي تقف خلفهم ويرغبون في تجربة Elixir. سيخبرك هذا الجزء الثاني بكيفية إعداد مشروع.

ملخص

  • لماذا إكسير؟
  • قم بإعداد المشروع
  • قم بإنشاء مستخدمين لموقع المسؤول على ويب الجزء 1: Bootstrap والكيان والاختبارات
  • قم بإنشاء مستخدمين لموقع المسؤول على ويب الجزء 2: الأمان وكلمات المرور
  • نشر تطبيق المظلة
  • إنشاء API
  • إنشاء خدمة التجميع
  • التعامل مع قناة لتطبيقات الوقت الحقيقي

الجديد! يمكنك الآن العثور على مصادر الدليل هنا: https://github.com/aridjar-umbrella-guide/medium_umbrella! سأقوم بترقيتها في نفس الوقت الذي أقوم فيه بترقية الدليل!

في هذا الفصل ، سوف نرى كيفية تثبيت وإنشاء وتوصيف تطبيق المظلة وتطبيق الأطفال الخاص به ، والإرساء وحفظ كل مشروع في مستودع git.

بالنسبة لهذا الدليل ، يُنصح بمعرفة كيفية إنشاء مستودع git حيث سنستكشف فقط الجزء الفرعي من git في الجزء المرتبط. لن تحتاج إلى أي معرفة حول عامل الميناء.

تثبيت Elixir ، عامل الميناء والعقدة

بالنسبة لأولئك منكم الذين لا يعرفون عامل الميناء ، يمكننا إنشاء Dockerfile واستخدامه للقيام بكل عملية تثبيت وأمر مرتبط باللغة من بيئة افتراضية يتم التحكم فيها. لكن ذلك سيجبر الجميع على استخدام عامل ميناء ، وقد يرغب البعض منكم في تجنب ذلك.

أولاً وقبل كل شيء ، دعنا نثبت Elixir باتباع هذا الدليل: تثبيت Elixir. بمجرد الانتهاء من ذلك ، افتح محطة واكتب

$> مزيج -v

يجب أن يكون لديك ناتج مماثل:

ملاحظة: قد ترغب في التحقق من إصدار Erland / OTP في عامل ميناء للتأكد من وجود إصدار مطابق (وإلا ، فإنه يمكن أن يخلق مشكلة). للقيام بذلك ، انتقل إلى مستودع docker-elixir ، وحدد أحدث إصدار (1.9 فعليًا) وافتح الملف المسمى Dockerfile. يجب أن يخبرك السطر الأول بالإصدار المستخدم. إذا كان الإصدار مختلفًا ، فيرجى تثبيت Erlang.

بمجرد تثبيت Elixir ، دعنا نعتني بـ Phoenix. نظرًا لأنه إطار عمل Elixir الرئيسي ، فسنستخدمه لإنشاء تطبيقات الويب الخاصة بنا.

$> mix archive.install hex phx_new 1.4.2

إذا لم ينجح هذا ، فيجب أن تكون قادرًا على تثبيته عبر Github باستخدام الأمر القديم:

$> mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

ثم ، دعونا تثبيت Docker.

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

بمجرد تثبيت Docker ، أعد تشغيل shell وأدخل:

عامل ميناء الخامس

يجب أن تشاهد النسخة المعروضة. إذا لم يكن الأمر كذلك ، فأضف مجلد Docker إلى مسار $ الخاص بك.

أخيرًا ، إذا لم يكن لديك Node مثبتًا بالفعل على جهاز الكمبيوتر الخاص بك وتريد امتلاكه ، فاتبع هذا الدليل: install node.js. ومع ذلك ، فإنه ليس إلزاميًا ، حيث سنقوم بتجميع وتشغيل العقدة والأصول الموجودة في حاوية Docker.

إنشاء تطبيق مظلة

الآن وقد قمنا بتثبيت كل ما نحتاجه ، دعونا نتحدث قليلاً عن التطبيقات المظلة:

يعرّف تطبيق Elixir Umbrella تطبيق أحد الوالدين يضم مجموعة من التطبيقات الفرعية ويديرها.

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

لكن كلام كافي! لإنشاء تطبيق المظلة ، يجب عليك إدخال:

$> mix phx.new [destination_folder] - umbrella

دعونا نلقي نظرة مفصلة على كل كلمة:

  • mix هو مدير حزم الإكسير ، مثل NPM لجافا سكريبت.
  • phx هي الكلمة الأساسية المرتبطة بإطار Phoenix.
  • جديد إنشاء تطبيق جديد. إذا كنت تريد معرفة المزيد عنها ، فما عليك سوى كتابة mix phx.new في shell command: ستعرض الوثائق. جديد بدون phx. أمامك أنشئ تطبيق Elixir بسيطًا ، كما سنرى لاحقًا.
  • [destination_folder] هو المكان الذي تريد أن يكون تطبيقك فيه.
ملاحظة: إذا كان تطبيق مظلة ، فسيتم إنشاء المجلد وإضافة _umbrella بعد الاسم.
  • - umbrella tell mix لإنشاء تطبيق مظلة.

في مرحلة ما ، سيسألك هذا الأمر عما إذا كنت تريد إحضار وتثبيت التبعيات. إذا كنت تنوي استخدام عامل ميناء ، فإنه ليس إلزاميا. بخلاف ذلك ، اكتب Y واضغط على enter.

ينشئ هذا الأمر تطبيقًا به مجلدين (التطبيقات والتهيئة) وعدد قليل من الملفات ، بما في ذلك ملفات التكوين لبيئات متعددة. معظمهم من المشاعات (.gitignore ، README.md ...).

الملفان اللذان لا تعرفهما هما .formatter.exs و mix.exs. كل منهم ملف Elixir Script (.exs). mix.exs تتعامل مع التكوين mix لهذا المشروع ، وتشمل الوصف ، والتبعيات ، وأحيانا أشياء أخرى. سنتحدث عن .formatter.exs في بضع فقرات.

بمجرد أن يفعل الأمر كل ما عليه القيام به ، لا تتبع ما تنصح به الإكسير. بدلا من ذلك:

$> cd [destination_folder] _umbrella && rm -rf ./apps/*

سيؤدي القيام بذلك إلى مسح التطبيقين اللذين أنشأهما Phoenix لنا عندما أنشأنا التطبيق المظلي. اعتمادا على ما تريد ، يمكنك الاحتفاظ بها. ولكن ، فيما يتعلق بهذا الدليل ، فإننا لن نستخدمها: "الويب" إذا كنت تستخدم تطبيقًا عامًا. يمكنني استخدام Angular على خادم Node ، وربما تفضل أيضًا إنشاء شيء ما للواجهة الأمامية ، مثل React أو VueJS.

نريد أيضًا تكييف اسم التطبيقات ، وهذا هو السبب في أننا أزلنا أيضًا النهاية الخلفية.

ملاحظة: قد يجادل البعض منكم بأنه يمكننا استضافة وتجميع مشروع JS للواجهة الأمامية في تطبيق شامل. وربما كنت على صواب ، لكنني لا أريد أن أقضي وقتًا لفهم كيفية القيام بذلك ، على الأقل في الوقت الحالي. ولكن إذا كنت تعرف كيفية القيام بذلك ، اكتب مقالًا متوسطًا ، وأرسل لي رابطًا إليه ، وسأنشره هنا! :)

أخيرًا ، ملف .formatter.exs هو ملف يسمح لك باستخدام أمر تنسيق themix. والغرض من ذلك هو تنسيق كل الملفات التي تحتوي على رمز الإكسير ، بحيث تتبع قواعد الكتابة نفسها ، مما يسهل قراءتها للجميع.

لا ينبغي أن يؤثر II كثيرًا على الكود ، لأن اللغات الوظيفية ليست متساهلة مثل اللغات التكرارية أو اللغوية ، خاصةً عندما نتابع الفكرة الرئيسية للنموذج الوظيفي (الكثير من الوظائف القصيرة والنقية) ، لكن يمكن أن تكون سهلة الاستخدام حسب الحالة.

سنقوم الآن بإنشاء 5 مشاريع في الداخل.

للقيام بذلك ، دعنا ننتقل إلى مجلد التطبيقات:

$> تطبيقات القرص المضغوط
تحذير !! كن حذرًا: يجب أن يكون اسم كل مجلد سيتم إنشاؤه هو نفسه اسم مستودع التخزين. هذا لتجنب المضاعفات والتكوين المفرط غير المجدي.

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

$> mix phx.new admin --app admin - no-ecto

يسمح لنا الخيار --app [name] بتعريف اسم تطبيق OTP ، وهو نظام وقت تشغيل Erlang (لتبسيط التعريف: هو تطبيق مستقل ومكتبة كاملة في نفس الوقت).

يزيل خيار - no-ecto خطوات إنشاء ملفات Ecto ، والتي هي الطريقة للتفاعل مع قاعدة بيانات PostgreSQL الخاصة بنا.

يمكننا استخدام خيار - mododule إذا أردنا اسمًا معينًا للوحدة الرئيسية. نظرًا لأننا لا نستخدمها ، ستأخذ الوحدة اسم المجلد (هنا: admin).

ملاحظة: تبدأ الوحدة النمطية دائمًا بحرف كبير.

أستمر في استكشاف التطبيقات التي تم إنشاؤها للدليل التالي. التعديل الوحيد الذي سنقوم به في هذا الجزء سيكون في كل ملفات التكوين ، بعد إعداد عامل النقل.

نظرًا لأننا نضع خيار - no-ecto ، نحتاج إلى إنشاء تطبيق للتفاعل مع قاعدة البيانات:

$> مزيج قاعدة بيانات جديدة - قاعدة بيانات التطبيق -

نحن لا نبني تطبيق Phoenix هنا ، ولكن مجرد تطبيق Elixir عادي ، مع شجرة إشراف بفضل خيار - الإعداد. هذا الخيار يتم تلقائيًا في تطبيق Phoenix ، حيث أنه إلزامي لتشغيله.

إليك الأمر لإنشاء تطبيق API:

$> mix phx.new api - app api --no-webpack - no-html --no-ecto

يزيل خيار - no-webpack الخطوات لإنشاء قاعدة CSS و JavaScript. بما أننا نستخدم واجهة برمجة التطبيقات ، فإننا لسنا بحاجة إلى أي منها.

يلغي خيار --no-html الخطوة التي تنشئ القوالب.

ملاحظة: سنقوم بمقارنة قاعدة البيانات والمسؤول خلال الدليل التالي ، والمسؤول وواجهة برمجة التطبيقات في الجزء "إنشاء واجهة برمجة تطبيقات".

لنقم بإنشاء التطبيقين الأخيرين:

$> مزيج مجمع جديد - تطبيق aggregator --sup
$> mix phx.new webhook - app webhook --no-webpack --no-html --no-ecto

أقوم بفصل واجهة برمجة التطبيقات (API) والمجمع وتطبيق webhook كما أريد أن يعملوا بشكل منفصل. نظرًا لأن كل تطبيق يمكن أن يكون مستقلاً ، فقد ترغب في إيقاف واجهة برمجة التطبيقات الخاصة بك ولكن ليس المجمع أو webhook إذا كان هناك ، على سبيل المثال ، خرق أمني.

سيكون الغرض من المجمع هو الحصول على مشاركات من خلاصة أخبار Twitter ، وسيكون Webhook هنا لإرسال البيانات إلى الأشخاص المتصلين بالتطبيق الخاص بك. نظرًا لأنه لا يجب استدعاء مجمع البيانات (ولكن يجب الاتصال به) ، لسنا بحاجة إلى شركة Phoenix هنا. سنستخدم Poison لمعالجة مكالمات HTTP ، لكننا سنرى ذلك في الجزء المناسب.

لقد انتهينا هنا! ولكن قبل الانتقال إلى Docker ، نحتاج إلى إضافة سطر واحد في ملف واحد:

  • في التطبيقات / المسؤول / الأصول / package.json ، أضف "build": "webpack - تطوير الوضع" في جزء النصوص. القيام بذلك سوف تجنب بعض المشاكل في وقت لاحق.

دعونا نتعامل مع Docker الآن

عند إنشاء المشروع المظلي والمشروعات الفرعية ، يمكننا التركيز على Docker. للقيام بذلك ، نحتاج إلى إنشاء ثلاثة ملفات:

  • Dockerfile
  • عامل ميناء compose.yml
  • أ

يقوم Dockerfile بإنشاء صورة عامل ميناء ، والتي يتم استخدامها في حاوية ، وهي نفسها:

حزمة خفيفة الوزن وقابلة للتنفيذ وقابلة للتنفيذ من برنامج يتضمن كل ما يلزم لتشغيله: الشفرة ، وقت التشغيل ، أدوات النظام ، مكتبات النظام ، الإعدادات.

لإنشاء Dockerfile ، افتح IDE الخاص بك على جذر تطبيق المظلة وقم بإضافة ملف يسمى Dockerfile. وسوف تحتوي على قائمة من الأوامر. سيتم تنفيذ هذه القائمة مرة واحدة بالكامل ، كل الأوامر في حاوية مؤقتة فردية. وذلك لخلق الصورة الكاملة التي سنعمل عليها بعد.

بعد ذلك ، سنعمل على إنشاء Docker:

Docker-compose هي أداة لتحديد وتشغيل تطبيقات Docker متعددة الحاويات.

سيحدد ملف إنشاء عامل الميناء الحاوية التي سيتم استخدامها. كما أنها تحدد بعض التكوين والمتغيرات env. يجب إنشاء ملف docker-compose في الجذر ويسمى docker-compose.yml. بمجرد إنشائه ، ضع الكود التالي في الداخل:

كما قمنا بتضمين متغير البيئة ، نحتاج إلى إنشاء .env:

من الممارسات الجيدة إضافة .env إلى .gitignore وإنشاء .env.dist لمشاركة الهيكل دون مشاركة البيانات التي تضعها فيه (حماية كلمة المرور ، مفاتيح API ، إلخ).

بمجرد إنشاء ملف docker-compose.yml وملفات .env ، نحتاج إلى إنشاء صورة عامل الميناء:

$> عامل إنشاء الإنشاء

بمجرد الانتهاء من الإنشاء ، دعنا نجرب عامل الإنشاء:

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

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

اقتل العملية باستخدام ctlr + c ، ثم قم بتشغيل Postgres و Redis في الوضع الصامت باستخدام الأمر التالي:

$> عامل ميناء - إنشاء ما بعد postgres redis

سيتم تشغيلهم كمهام خلفية ، لذلك لن نضطر إلى الاهتمام بهم ولن نشعر بالانزعاج بسبب سجلاتهم.

الآن ، دعونا نحصل على IP الخاص بحاوية Postgres ، لذلك قد نستخدمها في ملفات التكوين الخاصة بنا. للقيام بذلك ، أدخل:

$> عامل ميناء ps
$> عامل ميناء التفتيش -f '{{range.NetworkSettings.Networks}} {{. IPAddress}} {{end}}' [postgres_container_id]

عامل ميناء ملاحظة تظهر قائمة تشغيل الحاوية. باستخدام معرف حاوية Postgres ، استخدم الأمر الثاني لاستخراج عنوان IP وحفظه لوقت لاحق.

تتيح لنا أداة فحص الرصيف الحصول على بيانات حول حاوية محددة. يسمح لنا الخيار الذي تم اجتيازه بالحصول على IP الخاص بالحاوية ، والذي سنستخدمه في ملف .env الخاص بنا. للقيام بذلك ، استبدل قيمة PSQL_HOST بالنتيجة التي حصلت عليها من هذا الأمر الأخير.

ملاحظة: قم دائمًا بتشغيل postgres أولاً ثم redis ثانياً ، حيث يتم تحديد IP حسب ترتيب التشغيل.

لتبسيط حياتنا ، سنقوم بإنشاء قاعدة البيانات يدويًا ، باستخدام أمر مهم: docker-compose exec. للقيام بذلك ، أدخل:

$> عامل إنشاء - exec postgres psql مستخدم المستخدم

docker-compose exec بتنفيذ أمر في حاوية محددة (ومن هنا في postgrescontainer).

psql ، وهو الأمر ، هو غلاف Postgres ، ويحتاج إلى قاعدة بيانات ودور للاتصال (هنا المستخدم والمستخدم). لإنشاء dev وقاعدة بيانات الاختبار ، أدخل الأمر التالي:

إنشاء قاعدة بيانات test_dev؛
إنشاء قاعدة بيانات test_test؛

للتحقق من إنشاء قاعدة البيانات ، أدخل \ l واضغط على إدخال. في نهاية القائمة ، سترى قاعدتي البيانات.

لترك PSQL ، فقط أدخل \ q واضغط على enter. أخيرًا ، لإيقاف جميع الحاويات ، يمكنك استخدام:

$> عامل ميناء يؤلف وقف

تطبيقات التكوين

الآن وبعد أن تم إنشاء 5 تطبيقات لدينا وعمل عامل ترسية ، دعونا نقوم ببعض التكوين ، أولاً في تطبيقات phoenix 4:

  • في كل تطبيق تم إنشاؤه ، ولكن قاعدة البيانات ، افتح الملف config / devs.exs و config / test.exs
  • في dev.exs ، قم بتغيير المنفذ إلى 4001 و 4002 و 4003 و 4004 (منفذ واحد لكل تطبيق)
  • في test.exs ، قم بتغيير المنفذ إلى 4101 و 4102 و 4103 و 4104 (منفذ واحد لكل تطبيق)

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

  • إنشاء مجلد التكوين. في الداخل ، قم بإنشاء 5 ملفات: config.exs و dev.exs و prod.exs و prod.secret.exs و test.exs
  • في كل ملفات ، أضف استخدام Mix.Config في البداية
  • في config.exs ، أضف الأسطر التالية:
التكوين: قاعدة البيانات ،
  ecto_repos: [Database.Repo]
import_config "# {Mix.env ()}. exs"
  • في prod.exs ، أضف السطر التالي: import_config "prod.secret.exs"
  • في كل ملفات أخرى ، أضف (انتبه إلى السطور الأخيرتين):
التكوين: قاعدة البيانات ، Database.Repo ،
  اسم المستخدم: System.get_env ("POSTGRES_USER") ،
  كلمة المرور: System.get_env ("POSTGRES_PASSWORD") ،
  قاعدة البيانات: System.get_env ("POSTGRES_DB_ENV") ، # استبدال env بـ dev أو اختباره أو إزالته وفقًا للملف
  اسم المضيف: System.get_env ("POSTGRES_HOST") ،
  pool_size: 10 # في dev.exs et prod.secret.exs
  pool: Ecto.Adapters.SQL.Sandbox # in test.exs

أخيرًا ، دعنا نضيف Ecto إلى تطبيق قاعدة البيانات:

  • افتح قاعدة البيانات / mix.exs ، في قائمة المشروع ، أضف الأسماء المستعارة: الأسماء المستعارة ().
  • لا يزال في قاعدة البيانات / mix.exs ، في قائمة deps ، أضف {: ecto_sql و "~> 3.0"} و {: postgrex، "> = 0.0.0"}.
  • مرة أخرى ، في قاعدة البيانات / mix.exs ، أضف وظيفة الأسماء المستعارة مثل:
الأسماء المستعارة defp القيام به
  [
    "ecto.setup": ["ecto.create" ، "ecto.migrate" ، "run priv / repo / seeds.exs"] ،
    "ecto.reset": ["ecto.drop" ، "ecto.setup"] ،
    اختبار: ["ecto.create - quiet" ، "ecto.migrate" ، "test"]
  ]
النهاية
  • الآن ، افتح lib / database / application.ex وأضف Database.Repo في قائمة الأطفال
  • أخيرًا ، أنشئ lib / database / repo.ex وضعه داخل ما يلي:
defmodule Database.Repo القيام به
  استخدام Ecto.Repo ،
    otp_app:: قاعدة البيانات ،
    محول: Ecto.Adapters.Postgres
النهاية

الآن يمكنك التنفس ، التكوين والإعداد قد ولت.

مع الانتهاء من التكوين ، دعونا نحاول مرة أخرى حاويات Elixir لدينا:

$> عامل ميناء-إنشاء postgres- د
$> عامل ميناء يؤلف إكسير

انتقل إلى المتصفح الخاص بك واكتب المضيف المحلي: 4001. يجب أن تشاهد شيئًا ما مثل هذه الصورة ، بمعنى أن Phoenix and Docker قد تم تكوينهما جيدًا:

السماح بإضافة لمسة من git subodule

الآن وبعد أن أصبح مشروعنا جاهزًا ، فلنقم بإنشاء مستودع git لتطبيق المظلة.

مهم: نظرًا لأن المظلة تحتوي على مشاريع أخرى ، فلا تضيف أي شيء وتلتزم به وتدفعه إلى الآن. ما عليك سوى ربط مشروعك بمخزن git (git init و git Origin إضافة المصدر).

نظرًا لأن هذا الدليل موجه إلى أشخاص يتمتعون ببعض الخبرة في هذا المجال ، أتوقع منك أن تعرف كيفية القيام بذلك. إذا لم يكن كذلك ، اتبع إرشادات الرسائل:

  • إذا قمت بإنشاء مشروع مفتوح المصدر: جيثب
  • إذا كنت تريد الريبو الخاص: Gitlab

في حالة إنشاء مشروع Github مفتوح المصدر ، لا تقم بإضافة .gitignore أثناء إنشاء مشروع git. لا يزال بإمكانك إنشاء ملف ترخيص. إذا قمت بذلك ، قبل الدفع ، سيكون عليك القيام بما يلي:

$> git pull # يجب أن تفشل ، لكن تسمح لك بالحصول على إتقان
$> git --set-upstream-to = Origin / master master
$> بوابة السحب - غير مرتبط تاريخها

بمجرد إنشاء مشروعك وإضافته إلى مستودعك ، دعنا ننتقل إلى مجلد التطبيقات.

$> cd. / apps

بوابة حيلة

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

اربط كل تطبيق بمستودع git المرتبط به وادفعه. بمجرد الانتهاء من ذلك ، ارجع إلى مجلد التطبيقات. من هنا ، عليك فقط إدخال الأمر نفسه 5 مرات:

$> إضافة وحدات فرعية git [repository_url]

بمجرد الانتهاء من تنفيذ الأمر الأول ، سيتم إنشاء ملف جديد: .gitmodule. أنه يحتوي على قائمة كل الوحدات الفرعية المستخدمة.

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

تتمثل فكرة استخدام الوحدات الفرعية في السماح للآخرين بالوصول إلى التطبيقات المحددة التي تريدهم فقط الوصول إليها ، ولكن أيضًا للتمييز بين أيٍّ من تطبيقاتك ، حيث قد لا يحتاجون إلى تشغيل تطبيق آخر. هذا يجعلك أيضًا قادرًا على الحفاظ على مسار منفصل للتطور (بدون كل فروع) ، إلخ.

هام: يمكنك الآن إضافة كل شيء إلى مستودع بوابة تطبيق المظلة والالتزام والدفع.

لإنهاء هذا الدليل ، يمكننا أن نفعل أمرين غير إلزاميين:

$> مزيج deps.get

التي تنزل التبعيات اللازمة لإكسير.

$> تطبيقات cd / المشرف / الأصول
$> تثبيت npm
$> npm run build

هذا تنزيل تبعيات JS وتجميعها (و CSS) في / priv / ثابت. تحذير: من خلال القيام بذلك ، يمكنك الكتابة فوق الاستاتيكية في حاوية عامل الإرساء لأننا لم نضع مسار هذا المجلد في تكوين عامل الميناء.

هذا كل شيء لهذا اليوم! آمل أن يكون هذا البرنامج التعليمي الثاني مسرورًا لك وساعدك في إنشاء مشروع مظلة Elixir.

الدليل التالي ، سننشئ جزء المستخدم من موقع الإدارة ، ونضيف بعض الإقلاع إليه.

حتى في المرة القادمة ، الترميز سعيدة!

تحرير 18/03/2019:

  • تغيير جميع ملفات عامل ميناء (بما في ذلك نصيحة Eduard Liberumed حول إعدادات env)
  • أضف تطبيقًا خامسًا للتعامل مع كل التفاعل مع قاعدة البيانات ، بما يتماشى أكثر مع فكرة خرق الأمان من واجهات برمجة التطبيقات (مع الفكرة الأولية ، فإن إيقاف API من شأنه أن يخلق أخطاء في تطبيقات أخرى ، هل كان API الذي كان من المفترض أن يتعامل مع البيانات)
  • أزل Ecto من التطبيقات الأربعة الأولى
  • أضف إعداد Ecto إلى التطبيق الخامس لأنه ليس تطبيق طائر الفينيق

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

تحرير 19/03/2019: إضافة بعض التفاصيل في الجزء بوابة

تحرير 20/03/2019: إضافة سطر في Dockerfile RUN apt-get install -y inotify-tools

تحرير 03/08/2019: التحديث إلى Elixir 1.9

تحرير 17/09/2019: تغيير مجمع من تطبيق فينيكس إلى تطبيق عادي.