Επιστροφή στο blog

Δημιουργία και Ανάπτυξη μιας Εφαρμογής Flask με Docker σε Ubuntu 20.04

Δημιουργία και Ανάπτυξη μιας Εφαρμογής Flask με Docker σε Ubuntu 20.04

Εισαγωγή

Docker είναι μια πλατφόρμα κοντέινερ ανοιχτού κώδικα. Είναι ένα ελαφρύ, εικονικοποιημένο, φορητό, τυποποιημένο περιβάλλον καθορισμένο από λογισμικό που επιτρέπει στο λογισμικό να εκτελείται σε απομόνωση από άλλο λογισμικό που εκτελείται στον φυσικό κεντρικό υπολογιστή. Το Docker προσφέρει μια ελαφριά εναλλακτική λύση στις εικονικές μηχανές. Ταυτόχρονα, παρέχει φορητότητα, απόδοση, ευελιξία και επεκτασιμότητα των εφαρμογών. Για έναν ολοκληρωμένο οδηγό σχετικά με το οικοσύστημα του Docker, ρίξτε μια ματιά στη λεπτομερή επισκόπησή μας για το containerization με το Docker.

Flask είναι ένα minimal web framework ανοιχτού κώδικα κατασκευασμένο με Python. Μερικά από τα εξαιρετικά χαρακτηριστικά του Flask είναι ότι είναι ελαφρύ, ευέλικτο και εξαιρετικά δομημένο. Επιπλέον, δεν απαιτεί συγκεκριμένα εργαλεία ή πρόσθετα για να εκτελεστεί.

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

Προαπαιτούμενα

Αυτός θα είναι ένας πρακτικός οδηγός και θα πρέπει να δημιουργήσετε ένα περιβάλλον που θα σας επιτρέψει να τον παρακολουθήσετε:

Τώρα, ας ξεκινήσουμε!

Βήμα 1: Προετοιμασία της εφαρμογής Flask

Θα ξεκινήσουμε δημιουργώντας έναν κατάλογο που θα περιέχει την εφαρμογή Flask μας. Μπορείτε να επιλέξετε ένα όνομα καταλόγου της επιλογής σας. Ωστόσο, για αυτόν τον οδηγό, θα τον ονομάσουμε flask_demo. Θα αποθηκεύσουμε τα αρχεία του έργου μέσα στον κατάλογο /var/www, ο οποίος είναι συνήθως ο κατάλογος στον οποίο το Ubuntu επιτρέπει την πρόσβαση στο δημόσιο διαδίκτυο από προεπιλογή. Αρχικά, εκτελέστε τις ακόλουθες εντολές για να δημιουργήσετε τον κατάλογο και να πλοηγηθείτε σε αυτόν:

Μέσα σε αυτόν τον ριζικό κατάλογο του έργου μας, θα δημιουργήσουμε τη βασική δομή φακέλων μιας εφαρμογής Flask. Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε τη βασική δομή, προσθέτοντας τη σημαία -p για να δημιουργήσετε όλους τους γονικούς φακέλους στην πορεία:

Ο φάκελος app περιέχει όλα τα αρχεία που σχετίζονται με μια εφαρμογή Flask, συμπεριλαμβανομένων των views και blueprints. Τα views περιέχουν τον κώδικα που γράφετε για να απαντάτε σε αιτήματα που φτάνουν στην εφαρμογή σας. Τα blueprints βοηθούν στη δημιουργία στοιχείων εφαρμογής και υποστηρίζουν κοινά μοτίβα σε εφαρμογές Flask.

Ο κατάλληλα ονομασμένος φάκελος static περιέχει στατικά στοιχεία όπως εικόνες, αρχεία CSS και JavaScript. Ο κατάλογος templates περιέχει όλα τα πρότυπα HTML για το έργο.

Τώρα μπορούμε να ξεκινήσουμε να γράφουμε τα αρχεία που απαιτούνται για την προετοιμασία μιας εφαρμογής Flask. Ξεκινήστε δημιουργώντας ένα αρχείο με όνομα __init__.py μέσα στον κατάλογο app για να πείτε στον Python διερμηνέα ότι ο κατάλογος app θα πρέπει να αντιμετωπίζεται ως πακέτο. Εκτελέστε την ακόλουθη εντολή στο τερματικό σας για να ανοίξετε το αρχείο με τον επεξεργαστή nano:

Χρησιμοποιούμε πακέτα στην Python για να ομαδοποιήσουμε ενότητες σε λογικούς χώρους ονομάτων ή ιεραρχίες. Η σπονδυλωτοποίηση επιτρέπει τη διάσπαση του κώδικα σε μεμονωμένα και διαχειρίσιμα μπλοκ που εκτελούν συγκεκριμένες λειτουργίες.

Μετά από αυτό, μέσα στο αρχείο __init__.py που είναι ανοιχτό στον επεξεργαστή σας, προσθέστε το ακόλουθο απόσπασμα κώδικα για να ξεκινήσετε το στιγμιότυπο Flask και να εισαγάγετε τη λογική από το views.py που θα δημιουργήσετε στα επόμενα βήματα:

Όταν τελειώσετε, πατήστε Ctrl + O και ENTER για να αποθηκεύσετε το αρχείο, και μετά κλείστε το με Ctrl + X. Στη συνέχεια, ας δημιουργήσουμε το views.py μέσα στον κατάλογο app . Το αρχείο views.py θα περιέχει το μεγαλύτερο μέρος της λογικής της εφαρμογής:

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

Σε αυτό το αρχείο, ξεκινάμε εισάγοντας το στιγμιότυπο της εφαρμογής Flask. Στη συνέχεια, πρέπει να προσθέσουμε μια γραμμή για να ορίσουμε τη διαδρομή: @app.route(/). Η γραμμή @app.route(/) αναφέρεται ως decorator στο Flask. Μπορείτε να χρησιμοποιήσετε decorators για την εισαγωγή πρόσθετων λειτουργιών σε μία ή περισσότερες συναρτήσεις. Σε αυτήν την περίπτωση, περνάμε μια κλήση στη διαδρομή / στη συνάρτηση home. Όταν ένας χρήστης επισκέπτεται αυτήν τη διαδρομή, θα βλέπει το κείμενο: "Our Flask application is running!".

Στη συνέχεια, θα δημιουργήσετε το αρχείο uwsgi.ini για να κρατήσει τις ρυθμίσεις παραμέτρων uWSGI για την εφαρμογή. uWSGI είναι μια επιλογή ανάπτυξης για το Nginx που χρησιμεύει ως πρωτόκολλο και διακομιστής εφαρμογών. Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε το αρχείο στον ριζικό κατάλογο του έργου με τον επεξεργαστή nano:

Μέσα στο αρχείο που ανοίξατε, προσθέστε το ακόλουθο απόσπασμα κώδικα:

Αυτό το αρχείο περιέχει ορισμένες οδηγίες. Ορίζουμε τον σκοπό τους παρακάτω:

  • module – ορίζει τη μονάδα από την οποία θα εξυπηρετείται η εφαρμογή Flask. Έχουμε ορίσει τη μονάδα ως main, αναφερόμενοι στο αρχείο main.py στον ριζικό κατάλογο. Θα δημιουργήσουμε αυτό το αρχείο στο επόμενο βήμα.
  • callable – κατευθύνει το uWSGI να χρησιμοποιήσει το στιγμιότυπο app που εξάγεται από την εφαρμογή.
  • master – διασφαλίζει ότι η εφαρμογή συνεχίζει να εκτελείται για να ελαχιστοποιηθεί ο χρόνος διακοπής λειτουργίας κατά την επαναφόρτωση ολόκληρης της εφαρμογής.

Αποθηκεύστε και κλείστε το αρχείο όταν τελειώσετε.

Τώρα μπορείτε να δημιουργήσετε το αρχείο main.py για να καθορίσετε το σημείο εισόδου στην εφαρμογή σας. uWSGI θα διαβάσει αυτό το αρχείο για να μάθει πώς να αλληλεπιδρά με την εφαρμογή. Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε το αρχείο main.py  με το nano μέσα στον ριζικό κατάλογο του έργου σας:

Μέσα στο αρχείο, προσθέστε την ακόλουθη γραμμή που θα εισαγάγει το στιγμιότυπο Flask που δημιουργήθηκε στο πακέτο της εφαρμογής:

Το τελευταίο πράγμα που θα κάνετε σε αυτό το βήμα είναι να ορίσετε τις εξαρτήσεις που είναι απαραίτητες για την εκτέλεση της εφαρμογής. Θα ορίσουμε αυτές τις εξαρτήσεις μέσα σε ένα αρχείο που ονομάζεται dependencies.txt. Όταν το Docker δημιουργεί την εικόνα της εφαρμογής σας, θα εκτελέσει μια εντολή του διαχειριστή πακέτων pip (package manager) για να εγκαταστήσει τις εξαρτήσεις. Ανοίξτε το αρχείο στον ριζικό κατάλογο με την ακόλουθη εντολή:

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

Καταλήγουμε στην έκδοση Flask έκδοση 2.0.1 ως εξάρτηση. Είναι η τελευταία έκδοση κατά τη συγγραφή αυτού του οδηγού. Μπορείτε να μάθετε περισσότερα για τις διάφορες εκδόσεις από τη σελίδα Flask Changes. Αυτό ολοκληρώνει τη ρύθμιση της εφαρμογής Flask. Τώρα ας προετοιμάσουμε τις ρυθμίσεις παραμέτρων του Docker για την ανάπτυξη.

Step 2: Configure Docker

Για να ρυθμίσουμε μια ανάπτυξη Docker, θα δημιουργήσουμε δύο αρχεία, Dockerfile και start.sh. Το Dockerfile περιέχει δηλωτικές γραμμές που συνθέτουν μια εικόνα Docker. Το start.sh είναι ένα βασικό σενάριο κελύφους για τη δημιουργία της εικόνας και την εκκίνηση του κοντέινερ από το Dockerfile. Ενώ βρίσκεστε στον ριζικό κατάλογο του έργου, εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε το Dockerfile:

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

Η πρώτη γραμμή σε ένα Dockerfile ορίζει τη βασική εικόνα από την οποία χτίζουμε τη δική μας εικόνα. Σε αυτήν την περίπτωση, θα χτίσουμε με βάση το tiangolo/uwsgi-nginx-flask, διαθέσιμο από το DockerHub. Επιλέξαμε τη συγκεκριμένη εικόνα επειδή υποστηρίζει πολλές εκδόσεις Python.

Ορίζουμε επίσης ότι θέλουμε να ενημερώσουμε την εικόνα. Στη συνέχεια, πρέπει να προσθέσουμε τη bash εντολή διεργασία , τον nano επεξεργαστή κειμένου, και τον git πελάτη για τη λήψη (pull) και την αποστολή (push) πηγαίου κώδικα από αποθετήρια ελέγχου εκδόσεων όπως τα GitHub, Bitbucket, ή Gitlab. Οι γραμμές με ENV καθορίζουν μεταβλητές περιβάλλοντος που θα χρησιμοποιηθούν στο κοντέινερ.

Η εντολή COPY αντιγράφει τις εξαρτήσεις στο κοντέινερ. Η εντολή RUN καλεί τον pip διαχειριστή πακέτων για να αναλύσει το αρχείο dependencies.txt και να εγκαταστήσει τις εξαρτήσεις. Αποθηκεύστε και κλείστε το αρχείο όταν ολοκληρώσετε την επεξεργασία.

Στη συνέχεια, θα δημιουργήσετε το σενάριο εντολών start.sh. Αυτό το σενάριο θα περιλαμβάνει εντολές Docker για τη δημιουργία και την εκτέλεση της εικόνας. Παρόλο που μπορείτε να εκτελέσετε αυτές τις εντολές σταδιακά στο τερματικό, πιστεύουμε ότι είναι πιο καθαρό να τις προσθέσετε σε ένα σενάριο κελύφους (shell script) και απλώς να το καλέσετε από το τερματικό με μία μόνο εντολή.

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

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

Flask application Port Check

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

Μέσα σε αυτό το αρχείο, προσθέστε το ακόλουθο απόσπασμα κώδικα:

Η πρώτη γραμμή, η οποία αναφέρεται ως shebang, καθορίζει ότι πρόκειται για αρχείο bash και πρέπει να εκτελεστεί ως εντολές. Η δεύτερη γραμμή δηλώνει μια μεταβλητή που ονομάζεται app_name. Χρησιμοποιούμε αυτήν τη μεταβλητή για να ορίσουμε τα ονόματα της εικόνας και του κοντέινερ. Η τρίτη γραμμή καθοδηγεί το Docker να δημιουργήσει την εικόνα με βάση τον ορισμό του Dockerfile στον τρέχοντα κατάλογο. Η εικόνα θα ονομαστεί docker-flask-demo σύμφωνα με τη μεταβλητή.

Η τελευταία γραμμή δημιουργεί ένα κοντέινερ που ονομάζεται docker-flask-demo σύμφωνα με τη μεταβλητή που ορίσαμε. Η σημαία -d διατηρεί το κοντέινερ σε εκτέλεση στο παρασκήνιο (background) σε αποσυνδεδεμένη κατάσταση (detached state) μετά την ολοκλήρωση της εκτέλεσης της εντολής. Η σημαία -p συνδέει μια θύρα στον διακομιστή με μια συγκεκριμένη θύρα στο κοντέινερ. Σε αυτήν την περίπτωση, αντιστοιχίζουμε τη θύρα 45644 του κεντρικού υπολογιστή (host machine) στη θύρα 80 που θα εκθέσει το Docker στο κοντέινερ.

Χρησιμοποιούμε τη σημαία -v για να καθορίσουμε έναν τόμο Docker για προσάρτηση στο κοντέινερ. Η μεταβλητή $PWD είναι μια προεπιλεγμένη μεταβλητή Linux που περιέχει τη διαδρομή προς τον τρέχοντα κατάλογο στον οποίο βρίσκεστε τη δεδομένη στιγμή:

Flask application pwd

Στη δική μας περίπτωση, προσαρτούμε ολόκληρο τον κατάλογο του έργου στον κατάλογο /var/www του κοντέινερ. Η παραμετροποίηση του Docker είναι τώρα έτοιμη. Μπορείτε να δημιουργήσετε την εικόνα και να εκκινήσετε το κοντέινερ με βάση τη δημιουργημένη εικόνα εκτελώντας την ακόλουθη εντολή:

Περιμένετε να ολοκληρωθεί η εκτέλεση του σεναρίου και, στη συνέχεια, εκτελέστε την ακόλουθη εντολή Docker για να δείτε όλα τα εκτελούμενα κοντέινερ:

Το αποτέλεσμα θα εμφανίσει τα εκτελούμενα κοντέινερ:

Demo Docker

Θα πρέπει να δείτε το κοντέινερ μας με το όνομα docker-flask-demo στη λίστα με τα εκτελούμενα κοντέινερ. Βρείτε τη δημόσια IP του διακομιστή σας και αποκτήστε πρόσβαση σε αυτήν από το πρόγραμμα περιήγησής σας στη συγκεκριμένη θύρα: http://your-server-public-ip:45644.

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

Flask App Running

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

Βήμα 3: Παροχή περιεχομένου μέσω αρχείων προτύπων

Στο Flask, Πρότυπα χρησιμοποιούνται για την εμφάνιση στατικού και δυναμικού περιεχομένου στους επισκέπτες του ιστότοπου. Θα σας δείξουμε πώς να δημιουργήσετε ένα HTML πρότυπο και να το παρέχετε στους χρήστες σας όταν επισκέπτονται μια συγκεκριμένη διαδρομή. Για παράδειγμα, αυτό μπορεί να είναι μια Αρχική σελίδα ή μια σελίδα Σχετικά.

Εκτελέστε την ακόλουθη εντολή στο τερματικό σας για να δημιουργήσετε ένα αρχείο index.html στον κατάλογο app/templates :

Στη συνέχεια, προσθέστε το ακόλουθο απόσπασμα κώδικα στο αρχείο:

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

Προσθέστε το ακόλουθο απόσπασμα κώδικα στο αρχείο:

Αποθηκεύστε και κλείστε το αρχείο όταν τελειώσετε. Στη συνέχεια, τροποποιήστε το αρχείο app/views.py για να αναφέρεται στα πρότυπα καθώς και στις διαδρομές για τις πραγματικές σελίδες:

Τροποποιήστε το αρχείο έτσι ώστε να μοιάζει με αυτό:

Αποθηκεύστε και κλείστε το αρχείο όταν τελειώσετε. Οι αλλαγές που κάνατε δεν θα τεθούν σε ισχύ μέχρι να σταματήσετε και να επανεκκινήσετε το container. Εκτελέστε τις ακόλουθες εντολές Docker για να σταματήσετε και να εκκινήσετε το container. Σημειώστε το όνομα του container όπως το ορίσαμε προηγουμένως:

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

Flask application Index

 Flask application 1

Μέχρι στιγμής, έχετε δημιουργήσει μια εφαρμογή Flask που μπορεί να εξυπηρετεί περιεχόμενο στους επισκέπτες του ιστότοπού σας. Δείτε τη δομή αρχείων του έργου:

File Structure

Πιθανώς έχετε παρατηρήσει ότι έπρεπε να επανεκκινήσουμε το Docker container για να εφαρμοστούν οι νέες αλλαγές. Στο επόμενο βήμα, θα το αυτοματοποιήσουμε αυτό για να εξασφαλίσουμε λιγότερο χρόνο διακοπής λειτουργίας.

Βήμα 4: Ρύθμιση παραμέτρων αυτόματης επαναφόρτωσης ενημερώσεων αρχείων εφαρμογής

Σχεδόν καθημερινά κάνουμε αλλαγές σε μια εφαρμογή, για να βελτιώσουμε τη λογική, τις διεπαφές χρήστη ή να προσθέσουμε κάποιες εξαρτήσεις. Για να τεθούν σε ισχύ τέτοιες αλλαγές, μπορεί να απαιτείται επανεκκίνηση του Docker container. Ευτυχώς, uWSGI έχει μια δυνατότητα που ονομάζεται touch-reload για την επαναφόρτωση ενός σεναρίου Python χωρίς επανεκκίνηση του container.

Έτοιμη προς χρήση, η Python διαθέτει μια δυνατότητα auto-reloading που παρακολουθεί ολόκληρο το σύστημα αρχείων για αλλαγές και ανανεώνει την εφαρμογή όταν συμβαίνει μια αλλαγή. Αν και η αυτόματη επαναφόρτωση είναι καλή για την ελαχιστοποίηση του χρόνου διακοπής λειτουργίας, μπορεί να απαιτεί πολλούς πόρους. Επομένως, δεν συνιστάται για περιβάλλοντα παραγωγής.

Ας δούμε πώς μπορείτε να χρησιμοποιήσετε το touch-reload για να παρακολουθείτε τις αλλαγές σε ένα συγκεκριμένο αρχείο και να επαναφορτώνετε την εφαρμογή όταν υπάρχουν αλλαγές. Τροποποιήστε το αρχείο uwsgi.ini με τον επεξεργαστή nano:

Προσθέστε την επισημασμένη γραμμή ώστε να φαίνεται ως εξής:

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

Μπορείτε τώρα να τροποποιήσετε το αρχείο app/views.py για να δείτε πώς λειτουργεί η αυτόματη επαναφόρτωση:

Αλλάξτε τη συμβολοσειρά που επιστρέφει η συνάρτηση home όπως επισημαίνεται:

Αποθηκεύστε και κλείστε το αρχείο μόλις τελειώσετε.

Ανοίξτε την αρχική σελίδα της εφαρμογής σας στο πρόγραμμα περιήγησης: http://your-server-public-ip:45644.

Δεν θα δείτε ακόμα καμία αλλαγή. Αυτό συμβαίνει επειδή η συνθήκη touch-reload ανιχνεύει μια αλλαγή στο αρχείο uwsgi.ini . Μπορείτε να χρησιμοποιήσετε το touch για να ενεργοποιήσετε τη συνθήκη, επαναφορτώνοντας έτσι ολόκληρη την εφαρμογή με την ακόλουθη εντολή:

Τώρα, εάν επαναφορτώσετε την αρχική σελίδα, θα δείτε να εμφανίζονται οι νέες αλλαγές:

Touch Reload

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

Συμπέρασμα

Σε αυτόν τον οδηγό, υλοποιήσατε και αναπτύξατε μια εφαρμογή Flask με εικόνες και κοντέινερ Docker. Για να ελαχιστοποιήσετε τον χρόνο διακοπής λειτουργίας αποφεύγοντας την ανάγκη επανεκκίνησης του κοντέινερ, διαμορφώσατε touch-reload ώστε να ακούει για αλλαγές σε ένα συγκεκριμένο αρχείο και να επαναφορτώνει αυτόματα ολόκληρη την εφαρμογή. Τέλος, δοκιμάσατε όλα αυτά στο πρόγραμμα περιήγησης για να βεβαιωθείτε ότι λειτουργεί.

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

Για περισσότερους πόρους σχετικά με το Docker στο blog μας, μπορείτε να δείτε τα ακόλουθα:

Καλή συνέχεια!

author

Pranay Kapgate

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.