Πώς να δημιουργήσετε πολλές εφαρμογές ιστού με Elixir χάρη στην ομπρέλα - μέρος 2: Ρύθμιση του έργου

Ένας οδηγός (wannabe) για να μάθετε πώς να δημιουργείτε εφαρμογές ιστού με Elixir 1.9, Phoenix 1.4, Docker (για ανάπτυξη), Git (συμπεριλαμβανομένων των υπομονάδων) σε έκδοση κάθε εφαρμογής, PostgresQL, Redis, API κλήσεις και ανάπτυξη.

Αυτός ο οδηγός απευθύνεται σε προγραμματιστές που έχουν μερικά έργα πίσω τους και είναι πρόθυμοι να δοκιμάσουν το Elixir. Αυτό το δεύτερο μέρος θα σας πει πώς να δημιουργήσετε ένα έργο.

Περίληψη

  • Γιατί Elixir;
  • Ρυθμίστε το έργο
  • Δημιουργία χρηστών για τον ιστότοπο διαχείρισης 1: Bootstrap, οντότητα και δοκιμές
  • Δημιουργία χρηστών για το admin site μέρος 2: ασφάλεια και κωδικοί πρόσβασης
  • Αναπτύξτε την εφαρμογή Ομπρέλα
  • Δημιουργήστε ένα API
  • Δημιουργήστε μια υπηρεσία συνάθροισης
  • Χειριστείτε το κανάλι για εφαρμογές σε πραγματικό χρόνο

Νέος! Τώρα μπορείτε να βρείτε τις πηγές οδηγών εδώ: https://github.com/aridjar-umbrella-guide/medium_umbrella! Θα τα αναβαθμίσω ταυτόχρονα αναβαθμίζω τον οδηγό!

Σε αυτό το κεφάλαιο, θα δούμε πώς να εγκαταστήσετε, να δημιουργήσετε και να διαμορφώσετε μια εφαρμογή ομπρέλα και την εφαρμογή των παιδιών της, την αποβάθρα και να αποθηκεύσετε κάθε έργο σε ένα git αποθετήριο.

Για αυτόν τον οδηγό συνιστάται να γνωρίζετε πώς να δημιουργήσετε ένα αποθετήριο git καθώς θα διερευνήσουμε μόνο το τμήμα των υπομονάδων του git στο σχετικό μέρος. Δεν θα χρειαστείτε καμία γνώση σχετικά με το λιμάνι.

Εγκαταστήστε το Elixir, το Docker και τον κόμβο

Για όσους από εσάς δεν γνωρίζετε το docker, θα μπορούσαμε να δημιουργήσουμε ένα Dockerfile και να το χρησιμοποιήσουμε για να κάνουμε κάθε εγκατάσταση και εντολή που συνδέεται με τη γλώσσα από ένα ελεγχόμενο εικονικό περιβάλλον. Αλλά θα αναγκάσει τον καθένα να χρησιμοποιήσει το docker, και μερικοί από εσάς μπορεί να θέλουν να το αποφύγουν.

Έτσι, πρώτα απ 'όλα, ας εγκαταστήσουμε το Elixir ακολουθώντας αυτόν τον οδηγό: Εγκατάσταση του Elixir. Αφού γίνει, ανοίξτε ένα τερματικό και πληκτρολογήστε

$> mix -v

Θα πρέπει να έχετε παρόμοιο αποτέλεσμα:

Σημείωση: Ίσως θελήσετε να δείτε την έκδοση Erland / OTP στο docker για να βεβαιωθείτε ότι έχετε μια αντίστοιχη έκδοση (διαφορετικά, μπορεί να δημιουργήσει πρόβλημα). Για να το κάνετε αυτό, πηγαίνετε στο αποθήκη 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, κάντε επανεκκίνηση του κελύφους και πληκτρολογήστε:

docker -v

Θα πρέπει να δείτε την έκδοση που εμφανίζεται. Εάν όχι, προσθέστε το φάκελο Docker στη διαδρομή σας $.

Τέλος, αν δεν έχετε ήδη εγκαταστήσει τον κόμβο στον υπολογιστή σας και θέλετε να τον έχετε, ακολουθήστε αυτόν τον οδηγό: install node.js. Δεν είναι όμως υποχρεωτικό, καθώς θα συνθέσουμε και θα τρέξουμε τον κόμβο και τα στοιχεία του ενεργητικού σε ένα δοχείο Docker.

Δημιουργήστε την εφαρμογή ομπρέλα

Τώρα που έχουμε εγκαταστήσει όλα όσα χρειαζόμαστε, ας μιλήσουμε λίγο για τις εφαρμογές ομπρέλας:

Μια εφαρμογή Elixir Umbrella ορίζει μια εφαρμογή γονέα που φιλοξενεί και διαχειρίζεται ένα σύνολο παιδικών εφαρμογών.

Αυτό σημαίνει ότι αντί να δημιουργούνται πολλαπλές εφαρμογές που χωρίζονται από κάθε άλλη, κάθε εφαρμογή θα συνδέεται με τις άλλες μέσω της ομπρέλας, επιτρέποντάς τους να έχουν και τα πλεονεκτήματα των εφαρμογών μικροεπεξεργαστών και μονόλιθων.

Αλλά αρκετή συζήτηση! Για να δημιουργήσετε την εφαρμογή ομπρέλα, θα πρέπει να εισάγετε:

$ mix phx.new [destinationfolder] --umbrella

Ας δούμε λεπτομερώς κάθε λέξη:

  • mix είναι ο διαχειριστής πακέτων του ελιξήρου, όπως το NPM είναι για JavaScript.
  • phx είναι η λέξη-κλειδί που συνδέεται με το πλαίσιο Phoenix.
  • νέα δημιουργία νέας εφαρμογής. Αν θέλετε να μάθετε περισσότερα για αυτό, απλά γράψτε το mix phx.new στο κέλυφος εντολών: θα εμφανιστεί η τεκμηρίωση. Νέα χωρίς phx. στο μπροστινό μέρος δημιουργήστε μια απλή εφαρμογή Elixir, όπως θα δούμε αργότερα.
  • [destination_folder] είναι ο τόπος που θέλετε να είναι η αίτησή σας.
Σημείωση: εάν είναι μια εφαρμογή ομπρέλα, θα δημιουργήσει το φάκελο και θα προσθέσει το _umbrella μετά το όνομα.
  • - λέει το μίξερ για να δημιουργήσει μια εφαρμογή ομπρέλας.

Σε κάποια στιγμή, αυτή η εντολή θα σας ρωτήσει εάν θέλετε να ανακτήσετε και να εγκαταστήσετε τις εξαρτήσεις. Εάν σκοπεύετε να χρησιμοποιήσετε το λιμάνι, δεν είναι υποχρεωτικό. Διαφορετικά, πληκτρολογήστε Y και πατήστε enter.

Αυτή η εντολή δημιουργεί μια εφαρμογή με δύο φακέλους (εφαρμογές και config) και λίγα αρχεία, συμπεριλαμβανομένων των αρχείων ρυθμίσεων για πολλαπλά περιβάλλοντα. Τα περισσότερα από αυτά είναι κοινά (.gitignore, README.md ...).

Τα δύο αρχεία που ίσως δεν γνωρίζετε είναι τα αρχεία .formatter.exs και mix.exs. Κάθε ένα από αυτά είναι αρχείο Elixir Script (.exs). το mix.exs χειρίζεται τη διαμόρφωση του μείγματος για αυτό το έργο, περιλαμβάνει την περιγραφή, τις εξαρτήσεις και μερικές φορές άλλα πράγματα. Θα μιλήσουμε για το .formatter.exs σε μερικές παραγράφους.

Μόλις η εντολή έκανε ό, τι έπρεπε να κάνει, μην ακολουθήσετε τι ελιξίριο σας συμβουλεύει να κάνετε. Αντ 'αυτού:

$> cd [φάκελος προορισμού] _umbrella && rm -rf ./apps/*

Με αυτόν τον τρόπο θα διαγραφούν οι δύο εφαρμογές που δημιουργήθηκαν για εμάς από τη Phoenix όταν δημιουργήσαμε την εφαρμογή ομπρέλα. Ανάλογα με το τι θέλετε, μπορείτε να τα κρατήσετε. Όμως, όσον αφορά αυτόν τον οδηγό, δεν θα τα χρησιμοποιήσουμε: τον "ιστό" εάν πρόκειται για δημόσια εφαρμογή. Χρησιμοποιώ το γωνιακό σε ένα διακομιστή κόμβου και ίσως προτιμάτε και κάτι που έχει κατασκευαστεί για το μπροστινό μέρος, όπως το React ή το VueJS.

Θέλουμε επίσης να προσαρμόσουμε το όνομα των εφαρμογών, γι 'αυτό και αφαιρέσαμε το πίσω μέρος.

Σημείωση: Μερικοί από εσάς μπορεί να υποστηρίξουν ότι θα μπορούσαμε να φιλοξενήσουμε και να συντάξουμε ένα έργο front-end του JS σε μια εφαρμογή ομπρέλα. Και ίσως έχετε δίκιο, αλλά δεν θέλω να αφιερώσω χρόνο για να καταλάβω πώς να το κάνω, τουλάχιστον για τώρα. Αλλά αν ξέρετε πώς να το κάνετε, γράψτε ένα μεσαίο άρθρο, στείλτε μου ένα σύνδεσμο και θα το δημοσιεύσω εδώ! :)

Τέλος, το .formatter.exs είναι ένα αρχείο που σας επιτρέπει να χρησιμοποιήσετε την εντολή format themix. Ο σκοπός είναι να μορφοποιήσετε κάθε αρχείο που περιέχει κώδικα ελιξήρου, έτσι ώστε να ακολουθούν τους ίδιους κανόνες γραφής, καθιστώντας τους πιο εύκολο να διαβαστούν για όλους.

Το ΙΙ δεν πρέπει να επηρεάσει πολύ τον κώδικα σας, καθώς οι λειτουργικές γλώσσες δεν είναι τόσο επιτρεπτές όσο οι επαναληπτικές ή αντικειμενικές γλώσσες, ειδικά όταν ακολουθούμε την κύρια ιδέα του λειτουργικού παραδείγματος (πολλές σύντομες, καθαρές λειτουργίες), αλλά μπορεί να είναι χρήσιμη ανάλογα της κατάστασης.

Θα δημιουργήσουμε 5 εσωτερικά έργα.

Για να το κάνετε αυτό, μεταβείτε στο φάκελο εφαρμογών:

$> cd apps
Προειδοποίηση !! Προσέξτε: το όνομα του κάθε φακέλου που θα δημιουργήσουμε θα πρέπει να είναι το ίδιο με το όνομα του repository του git. Αυτό γίνεται για να αποφευχθούν οι επιπλοκές και η υπερβολική, άχρηστη διαμόρφωση.

Αυτός ο φάκελος έχει σχεδιαστεί για να περιέχει κάθε εφαρμογή που θα δημιουργήσουμε. Ο πρώτος θα είναι ο δικτυακός τόπος της διοίκησης. Για να το κάνετε αυτό, κάντε μόνο την ακόλουθη εντολή:

$> μιξ phx.new admin --app admin --no-ecto

Η επιλογή --app [όνομα] μας επιτρέπει να καθορίσουμε το όνομα της εφαρμογής OTP, που είναι ένα σύστημα Erlang runtime (για να υπερπροσδιοριστεί ο ορισμός: είναι μια ανεξάρτητη εφαρμογή και μια πλήρης βιβλιοθήκη ταυτόχρονα).

Η επιλογή --no-ecto καταργεί τα βήματα δημιουργίας των αρχείων Ecto, τα οποία είναι ο τρόπος αλληλεπίδρασης με τη βάση δεδομένων PostgreSQL.

Θα μπορούσαμε να χρησιμοποιήσουμε την επιλογή --module εάν θέλαμε ένα συγκεκριμένο όνομα για την κύρια μονάδα. Καθώς δεν το χρησιμοποιούμε, η ενότητα θα πάρει το όνομα του φακέλου (εδώ: admin).

Σημείωση: μια υπομονάδα αρχίζει πάντα με ένα κεφαλαίο γράμμα.

Συνεχίζω την εξερεύνηση των εφαρμογών που δημιουργήθηκαν για τον επόμενο οδηγό. Η μόνη τροποποίηση που θα κάνουμε σε αυτό το μέρος θα είναι σε κάθε αρχείο ρύθμισης παραμέτρων, μετά την εγκατάσταση του docker.

Καθώς βάλουμε την επιλογή -no-ecto, πρέπει να δημιουργήσουμε μια εφαρμογή για να αλληλεπιδράσουμε με τη βάση δεδομένων:

$> ανάμειξη νέας βάσης δεδομένων - βάση δεδομένων app --sup

Δεν δημιουργούμε εδώ μια εφαρμογή Phoenix, αλλά απλά μια κανονική εφαρμογή Elixir, με ένα δέντρο παρακολούθησης χάρη στην επιλογή -sup. Αυτή η επιλογή γίνεται αυτόματα σε μια εφαρμογή Phoenix, καθώς είναι υποχρεωτική για την εκτέλεση.

Εδώ είναι η εντολή για την κατασκευή της εφαρμογής API:

$> μίγμα phx.new api - app api --no-webpack --no-html --no-ecto

Η επιλογή --no-webpack καταργεί τα βήματα για τη δημιουργία βάσης CSS και JavaScript. Καθώς κάνουμε ένα API δεν χρειαζόμαστε κανένα από αυτά.

Η επιλογή --no-html ακυρώνει το βήμα δημιουργίας των προτύπων.

Σημείωση: Θα συγκρίνουμε τη βάση δεδομένων και τον διαχειριστή κατά τον επόμενο οδηγό και τον Admin και το API στο τμήμα "Δημιουργία API".

Ας δημιουργήσουμε τις δύο τελευταίες εφαρμογές:

$> mix new aggregator --app aggregator --sup
$> mix phx.new webhook --app webhook --no-webpack --no-html --no-ecto

Διαχωρίζω το API, τον συγκεντρωτή και την εφαρμογή webhook καθώς θέλω να δουλέψουν ξεχωριστά. Καθώς κάθε εφαρμογή μπορεί να είναι ανεξάρτητη, ίσως θελήσετε να σταματήσετε το API αλλά όχι τον aggregator ή το webhook εάν υπάρχει, για παράδειγμα, παραβίαση ασφαλείας.

Ο σκοπός του Aggregator θα είναι να συγκεντρωθούν αναρτήσεις από το news feed του Twitter σας και το Webhook θα είναι εδώ για να στείλει τα δεδομένα σε άτομα συνδεδεμένα με την αίτησή σας. Επειδή ο Aggregator δεν πρέπει να καλείται (αλλά πρέπει να καλέσει), δεν χρειαζόμαστε τον Φοίνιξ εδώ. Θα χρησιμοποιήσουμε το Poison για να χειριστούμε τις κλήσεις HTTP, αλλά θα το δούμε στο κατάλληλο μέρος.

Τελειώσαμε εδώ! Αλλά πριν πάτε στο Docker, πρέπει να προσθέσουμε μια γραμμή σε ένα αρχείο:

  • Στο apps / admin / assets / package.json προσθέστε, "build": "webpack - mode development" στο τμήμα scripts. Κάτι τέτοιο θα αποφύγει κάποια προβλήματα αργότερα.

Ας χειριστούμε το Docker τώρα

Καθώς δημιουργείται το έργο ομπρέλα και τα υποπρογράμματα, μπορούμε να επικεντρωθούμε στο Docker. Για να γίνει αυτό, πρέπει να δημιουργήσουμε τρία αρχεία:

  • ένα αρχείο Docker
  • ένα docker-compose.yml
  • ένα

Το Dockerfile δημιουργεί μια εικόνα docker, η οποία χρησιμοποιείται σε ένα δοχείο, η οποία είναι:

Ένα ελαφρύ, αυτόνομο, εκτελέσιμο πακέτο ενός λογισμικού που περιλαμβάνει όλα τα απαραίτητα για την εκτέλεση του: κώδικα, χρόνος εκτέλεσης, εργαλεία συστήματος, βιβλιοθήκες συστήματος, ρυθμίσεις.

Για να δημιουργήσετε ένα Dockerfile, ανοίξτε το IDE στη ρίζα της εφαρμογής ομπρέλα και προσθέστε ένα αρχείο που ονομάζεται Dockerfile. Θα περιέχει μια λίστα εντολών. Αυτή η λίστα θα εκτελεστεί μία φορά πλήρως, με τις εντολές σε ένα μεμονωμένο προσωρινό κοντέινερ. Και έτσι να δημιουργήσουμε την πλήρη εικόνα που θα τρέξουμε μετά.

Στη συνέχεια, θα δουλέψουμε στο Docker-compose:

Το Docker-compose είναι ένα εργαλείο για τον ορισμό και την εκτέλεση εφαρμογών Docker πολλαπλών κοντέινερ.

Το αρχείο docker-compose θα καθορίσει ποιο δοχείο θα χρησιμοποιηθεί. Ορίζει επίσης κάποια διαμόρφωση και τις μεταβλητές env. Το αρχείο docker-compose πρέπει να δημιουργηθεί στη ρίζα και να ονομάζεται docker-compose.yml. Μόλις δημιουργηθεί, βάλτε τον ακόλουθο κώδικα:

Δεδομένου ότι έχουμε μεταβλητή περιβάλλοντος, πρέπει να δημιουργήσουμε ένα .env:

Μια καλή πρακτική είναι να προσθέσετε το .env στο .gitignore και να δημιουργήσετε ένα. Env.dist για να μοιραστείτε τη δομή χωρίς να μοιραστείτε τα δεδομένα που έχετε θέσει σε αυτήν (προστασία κωδικού πρόσβασης, κλειδιά API κ.λπ.).

Μόλις δημιουργηθούν τα αρχεία docker-compose.yml και .env, πρέπει να δημιουργήσουμε την εικόνα του docker:

$> δημιουργία docker-compose

Μόλις ολοκληρωθεί η κατασκευή, ας δοκιμάσουμε το docker-compose μας:

$> docker-συνθέστε επάνω

Μπορεί να χρειαστεί να μοιραστείτε το τοπικό σας αποθηκευτικό χώρο ή να κάνετε ορισμένες συγκεκριμένες ρυθμίσεις για το λιμάνι. Μπορεί επίσης να αντιμετωπίσετε ένα κλείσιμο του διακομιστή ελιξίματος και αν όχι, πιθανόν να έχετε μηνύματα σφάλματος. Αυτό είναι φυσιολογικό, καθώς δεν ρυθμίσαμε τίποτα και ακόμα κι αν λειτουργεί, δεν είναι ακόμη έτοιμο.

Σκοτώστε τη διαδικασία με ctlr + c και, στη συνέχεια, ξεκινήστε απλώς Postgres και Redis σε σιωπηλή λειτουργία με την ακόλουθη εντολή:

$> docker-συνθέστε μέχρι -d postgres redis

Θα λειτουργούν ως βασικά καθήκοντα, οπότε δεν θα πρέπει να τους νοιάζουμε και δεν θα μας ενοχλούν από τα κορμούς τους.

Τώρα, ας πάρουμε το IP του δοχείου Postgres έτσι μπορούμε να το χρησιμοποιήσουμε τελευταίο στα αρχεία ρυθμίσεων. Για να το κάνετε αυτό, πληκτρολογήστε:

$> docker ps
$ docker επιθεωρεί -f '{{range.NetworkSettings.Networks}} {{. IPAddress}} {{end}}' [postgres_container_id]

docker ps εμφανίζει τη λίστα του τρέχοντος δοχείου. Με την ταυτότητα του κοντέινερ Postgres, χρησιμοποιήστε τη δεύτερη εντολή για να εξαγάγετε το IP και να το αποθηκεύσετε για αργότερα.

Η επιθεώρηση του λιμένα μας επιτρέπει να λάβουμε δεδομένα σχετικά με ένα συγκεκριμένο εμπορευματοκιβώτιο. Η περασμένη επιλογή μας επιτρέπει να πάρουμε μόνο το IP του κοντέινερ, το οποίο θα χρησιμοποιήσουμε στο αρχείο .env. Για να το κάνετε αυτό, αντικαταστήστε την τιμή PSQL_HOST με το αποτέλεσμα που λαμβάνετε από αυτήν την τελευταία εντολή.

Σημείωση: Πάντοτε να εκκινείτε πάντα postgres πρώτα και redis δεύτερο, καθώς το IP καθορίζεται από την εντολή εκτόξευσης.

Για να απλοποιήσουμε τη ζωή μας, θα δημιουργήσουμε με μη αυτόματο τρόπο τη βάση δεδομένων, με μια σημαντική εντολή: docker-compose exec. Για να το κάνετε αυτό, πληκτρολογήστε:

$> docker-compose exec postgres psql χρήστη χρήστη

docker-compose exec εκτελέσει μια εντολή σε ένα συγκεκριμένο κοντέινερ (εδώ είναι στο postgrescontainer).

Το psql, που είναι η εντολή, είναι το κέλυφος του Postgres και χρειάζεται μια βάση δεδομένων και ένα ρόλο σύνδεσης (εδώ χρήστης και χρήστης). Για να δημιουργήσετε τη βάση δεδομένων δεδομένων και τη βάση δεδομένων δοκιμής, πληκτρολογήστε την ακόλουθη εντολή:

CREATE DATABASE test_dev;
CREATE DATABASE test_test;

Για να ελέγξετε αν δημιουργείται η βάση δεδομένων, πληκτρολογήστε \ l και πατήστε enter. Στο τέλος της λίστας, θα πρέπει να δείτε τις δύο βάσεις δεδομένων.

Για να φύγετε από την PSQL, απλώς πληκτρολογήστε \ q και πατήστε enter. Τέλος, για να σταματήσετε όλα τα δοχεία, μπορείτε να χρησιμοποιήσετε:

$> σταματήστε να συνθέσετε τη βάση

Διαμόρφωση εφαρμογών

Τώρα που δημιουργήσαμε τις 5 εφαρμογές μας και τις λειτουργίες του docker, ας κάνουμε λίγο μια διαμόρφωση, πρώτα στις 4 εφαρμογές phoenix:

  • Σε κάθε εφαρμογή που δημιουργήθηκε, αλλά στη βάση δεδομένων, ανοίξτε το αρχείο config / devs.exs και config / test.exs
  • Στο dev.exs, αλλάξτε τη θύρα σε 4001, 4002, 4003 και 4004 (1 θύρα ανά εφαρμογή)
  • Στο test.exs, αλλάξτε τη θύρα σε 4101, 4102, 4103 και 4104 (1 θύρα ανά εφαρμογή)

Αυτό είναι για τις εφαρμογές phoenix. Αλλά πρέπει επίσης να διαμορφώσουμε την εφαρμογή βάσης δεδομένων. Κάθε τροποποίηση εδώ θα γίνει σε εφαρμογές / βάση δεδομένων:

  • Δημιουργήστε το φάκελο config. Μέσα, δημιουργήστε 5 αρχεία: config.exs, dev.exs, prod.exs, prod.secret.exs και test.exs
  • Σε κάθε αρχείο, προσθέστε το Mix.Config στην αρχή
  • Στο config.exs, προσθέστε τις ακόλουθες γραμμές:
config: βάση δεδομένων,
  ecto_repos: [Database.Repo]
import_config "# {Mix.env ()} .exs"
  • Στο prod.exs, προσθέστε την ακόλουθη γραμμή: import_config "prod.secret.exs"
  • Σε κάθε άλλο αρχείο, προσθέστε (προσέξτε τις 2 τελευταίες γραμμές):
config: βάση δεδομένων, Database.Repo,
  username: 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
  πισίνα: Ecto.Adapters.SQL.Sandbox # στο 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 / βάση δεδομένων / repo.ex και τοποθετήστε τα παρακάτω:
defmodule Database.Repo κάνουμε
  χρησιμοποιήστε το Ecto.Repo,
    otp_app:: βάση δεδομένων,
    προσαρμογέας: Ecto.Adapters.Postgres
τέλος

Τώρα μπορείτε να αναπνεύσετε, η διαμόρφωση και η ρύθμιση έχουν τελειώσει.

Με την πραγματοποίηση της διαμόρφωσης, ας προσπαθήσουμε ξανά το δοχείο του Elixir:

$> docker-συνθέστε επάνω -d postgres
$> docker-συνθέστε το ελιξίριο

Μεταβείτε στο πρόγραμμα περιήγησης και πληκτρολογήστε localhost: 4001. Θα πρέπει να δείτε κάτι σαν αυτή την εικόνα, που σημαίνει ότι το Phoenix και το Docker είναι καλά διαμορφωμένα:

Αφήστε να προσθέσετε ένα άγγιγμα submodule git

Τώρα που έχουμε έτοιμο το έργο μας, ας δημιουργήσουμε ένα git αποθετήριο για την εφαρμογή ομπρέλα.

Σημαντικό: καθώς η ομπρέλα περιέχει άλλα έργα, μην προσθέτετε, δεσμεύετε και μην πιέζετε τίποτα προς το παρόν. Απλά συνδέστε το έργο σας με ένα git repository (git init και git remote add origin).

Καθώς αυτός ο οδηγός απευθύνεται σε άτομα με κάποια εμπειρία git, σας περιμένω να μάθετε πώς να το κάνετε. Εάν όχι, ακολουθήστε τους οδηγούς αυτών των οδηγιών:

  • Εάν δημιουργήσετε ένα έργο ανοιχτού κώδικα: Github
  • Αν θέλετε ιδιωτικό repo: Gitlab

Σε περίπτωση που δημιουργήσετε ένα έργο ανοιχτού κώδικα Github, μην προσθέσετε ένα .gitignore κατά τη διάρκεια της δημιουργίας του έργου git. Μπορείτε ακόμα να δημιουργήσετε ένα αρχείο LICENSE. Αν το κάνετε, πριν πιέσετε, θα πρέπει να κάνετε:

$ git pull # θα πρέπει να αποτύχει, αλλά σας επιτρέπουν να έχετε πρόσβαση στο master
$> git --set-upstream-to = αρχή / κύριο master
$> git pull - άγνωστες ιστορίες

Αφού δημιουργηθεί το έργο σας και προστεθεί στο αποθετήριο σας, μεταβείτε στο φάκελο εφαρμογών.

$> cd ./apps

Git submodule

Δημιουργήστε ένα νέο έργο στο git για κάθε εφαρμογή, με το ίδιο όνομα με το φάκελο της εφαρμογής. Για άλλη μια φορά, αυτό είναι εξαιρετικά σημαντικό για να αποφύγετε να κάνετε πολύ περισσότερες ρυθμίσεις από ό, τι είναι απαραίτητο.

Συνδέστε κάθε εφαρμογή με το σχετικό χώρο αποθήκευσης git και πιέστε τα. Αφού τελειώσετε, επιστρέψτε στο φάκελο εφαρμογών. Από εδώ, απλά πρέπει να εισάγετε 5 φορές την ίδια εντολή:

$ git submodules προσθέστε [repository_url]

Μόλις ολοκληρωθεί η πρώτη εντολή, θα δημιουργηθεί ένα νέο αρχείο: .gitmodule. Περιέχει τον κατάλογο κάθε υπομονάδας που χρησιμοποιήθηκε.

Μια λέξη για τα υπομονάδες: θα πρέπει να μπορείτε να τα ενημερώσετε στη ρίζα του έργου με ένα απλό pull git. Αλλά, όπως και εγώ, μπορεί επίσης να χρειαστεί να τραβήξετε σε κάθε εφαρμογή. Ίσως δεν είναι τόσο καλός όσο μπορείς να είσαι μαζί τους.

Η ιδέα της χρήσης των υπομονάδων είναι να επιτρέπεται σε άλλα άτομα να έχουν πρόσβαση μόνο στις επιλεγμένες εφαρμογές που θέλετε να έχουν πρόσβαση, αλλά και να διαφοροποιούν τις εφαρμογές σας, καθώς ενδέχεται να μην χρειάζονται άλλες εφαρμογές για εργασία. Αυτό σας δίνει τη δυνατότητα να κρατήσετε μια ξεχωριστή διαδρομή της εξέλιξης (χωρίς κάθε κλάδο), κλπ.

Σημαντικό: Τώρα μπορείτε να προσθέσετε τα πάντα στο χώρο αποθήκευσης git της εφαρμογής ομπρέλα, να δεσμεύσετε και να προωθήσετε.

Για να ολοκληρώσετε αυτόν τον οδηγό, μπορούμε να κάνουμε δύο μη υποχρεωτικές εντολές:

$> mix deps.get

Ποια λήψη των εξαρτώμενων εξαρτημάτων του Elixir.

$ cd apps / admin / assets
$ npm install
$ npm run build

Αυτό κατεβάζει τις εξαρτήσεις του JS και τις μεταγλωττίζει (και το CSS) στο / priv / static. Προειδοποίηση: Με αυτόν τον τρόπο, μπορείτε να αντικαταστήσετε τη στατική στο δοχείο docker, καθώς δεν βάζαμε τη διαδρομή αυτού του φακέλου στη σύνθεση του docker.

Αυτά για σήμερα! Ελπίζω ότι αυτό το δεύτερο σεμινάριο σας ευχαρίστησε και σας βοήθησε να δημιουργήσετε ένα ομπρέλα Elixir project.

Επόμενος οδηγός, θα δημιουργήσουμε το μέρος χρήστη της ιστοσελίδας διαχείρισης και θα προσθέσουμε κάποια bootstrap σε αυτό.

Μέχρι την επόμενη φορά, ευτυχής κωδικοποίηση!

Επεξεργασία 18/03/2019:

  • Αλλαγή όλων των αρχείων docker (συμπεριλαμβανομένων των συμβουλών του Eduard Liberumed σχετικά με τις ρυθμίσεις env)
  • Προσθέστε μια πέμπτη εφαρμογή για να χειριστείτε όλες τις αλληλεπιδράσεις με τη βάση δεδομένων, περισσότερο σύμφωνη με την ιδέα της παραβίασης ασφάλειας από τα API (με την αρχική ιδέα, η διακοπή του API θα δημιουργούσε σφάλματα σε άλλα app είναι API που έπρεπε να χειριστεί τα δεδομένα)
  • Καταργήστε το Ecto από τις τέσσερις πρώτες εφαρμογές
  • Προσθέστε την εγκατάσταση Ecto στην πέμπτη εφαρμογή, καθώς δεν είναι εφαρμογή Phoenix

Μου πήρε καιρός να επιστρέψω στη συγγραφή και ζητώ συγνώμη γι 'αυτό σε όποιον ήθελε να μάθει περισσότερα για το project ομπρέλα μέσω αυτού του οδηγού. Η ζωή συνέβη ακριβώς.

Επεξεργασία 19/03/2019: προσθέστε λίγες λεπτομέρειες στο τμήμα git

Επεξεργασία 20/03/2019: προσθέστε μια γραμμή στο αρχείο Dockerfile RUN apt-get install -y inotify-tools

Επεξεργασία 03/08/2019: ενημέρωση στο Elixir 1.9

Επεξεργασία 17/09/2019: Αλλαγή Aggregator από μια εφαρμογή Phoenix σε κανονική εφαρμογή.