Πλήρης οδηγός για το Docker Compose: Ορχήστρωση εφαρμογών πολλαπλών κοντέινερ

Τελευταία ενημέρωση: 2 Νοεμβρίου, 2026
Συγγραφέας: Pixelated
  • Σας επιτρέπει να ορίζετε και να διαχειρίζεστε σύνθετες υποδομές χρησιμοποιώντας ένα μόνο αρχείο διαμόρφωσης YAML.
  • Διευκολύνει τον συντονισμό υπηρεσιών, δικτύων και όγκων για να διασφαλίσει τη διατήρηση και την επικοινωνία των δεδομένων.
  • Βελτιστοποιεί τη ροή εργασίας τοπικής ανάπτυξης, επιτρέποντάς σας να ρυθμίσετε ολόκληρη τη στοίβα τεχνολογίας με μία μόνο εντολή.

Ομάδα προγραμματιστών που εργάζονται σε ένα σύγχρονο τεχνολογικό γραφείο με το Docker Compose

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

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

Τι ακριβώς είναι το Docker Compose και πώς λειτουργεί;

Σε αντίθεση με το τυπικό Docker, το οποίο επικεντρώνεται στη δημιουργία και εκτέλεση μεμονωμένων εικόνων, το Compose συντονίζει πολλαπλά κοντέινερ που συνεργάζονται. Η μαγεία του έγκειται στη χρήση ενός αρχείου διαμόρφωσης YAML (συνήθως ονομάζεται docker-compose.yml ή compose.yaml ). Αυτό το έγγραφο περιγράφει ολόκληρη την αρχιτεκτονική: ποιες υπηρεσίες χρειάζονται, πώς πρέπει να συνδέονται μεταξύ τους και πού θα αποθηκεύονται τα δεδομένα.

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

  Η σημασία της καθυστέρησης στο διαδίκτυο και πώς επηρεάζει τη σύνδεσή σας

Docker Compose V2: Τι νέο υπάρχει στο τρέχον πρότυπο

Είναι σημαντικό να αναφέρουμε ότι από το 2022, το πρότυπο είναι η Έκδοση 2. Αν προέρχεστε από παλαιότερα εκπαιδευτικά σεμινάρια, θα παρατηρήσετε βασικές αλλαγές. Πρώτον, η εντολή έχει εξελιχθεί: η παύλα (docker-compose) δεν χρησιμοποιείται πλέον. Είναι πλέον ένα ενσωματωμένο πρόσθετο του Docker, επομένως εκτελούμε την εντολή `docker compose` . Επίσης, η γραμμή έκδοσης στην αρχή του αρχείου (όπως `έκδοση: '3.8')` δεν απαιτείται πλέον και το σύστημα απλώς την αγνοεί.

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

Ανατομία του αρχείου διαμόρφωσης

Φορητός υπολογιστής που εμφανίζει ένα αρχείο διαμόρφωσης κώδικα για το Docker Compose

Το αρχείο YAML είναι ιεραρχικά οργανωμένο σε τρία βασικά τμήματα που πρέπει να κατανοήσουμε για να αποφύγουμε τυχόν λάθη:

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

Προηγμένες ρυθμίσεις και βασικές παράμετροι

Για να αξιοποιήσετε στο έπακρο το εργαλείο, υπάρχουν αρκετές παράμετροι που κάθε προγραμματιστής πρέπει να γνωρίζει. Για παράδειγμα, η παράμετρος `depends_on` είναι ζωτικής σημασίας για τον έλεγχο της σειράς εκκίνησης. Εάν η εφαρμογή σας χρειάζεται η βάση δεδομένων να είναι έτοιμη πριν από την εκκίνηση, αυτή η παράμετρος είναι η κατάλληλη. Στην έκδοση 2, μπορούμε ακόμη και να προσθέσουμε ελέγχους εύρυθμης λειτουργίας, ώστε η υπηρεσία να περιμένει μέχρι η βάση δεδομένων να είναι πραγματικά λειτουργική και όχι απλώς "ενεργή".

  Πλήρης οδηγός για την κυβερνοασφάλεια στην ΟΤ: Προστασία του φυσικού κόσμου στην ψηφιακή εποχή

Όσον αφορά τους τόμους, υπάρχουν ονομασμένοι τόμοι , οι οποίοι διαχειρίζονται από το Docker και είναι ιδανικοί για βάσεις δεδομένων, και bind mounts , τα οποία συνδέουν έναν φάκελο στον υπολογιστή μας με έναν στο container, κάτι απαραίτητο στην ανάπτυξη, ώστε οι αλλαγές στον κώδικα να αντικατοπτρίζονται άμεσα χωρίς να χρειάζεται να επανεκκινηθεί τίποτα.

Εγκατάσταση σύμφωνα με το λειτουργικό σύστημα

Αν δεν έχετε το Docker Desktop, η διαδικασία εγκατάστασης ποικίλλει. Σε Windows και macOS , η απλούστερη επιλογή είναι να εγκαταστήσετε το Docker Desktop, το οποίο περιλαμβάνει ήδη τα πάντα. Σε Linux , η διαδικασία συνήθως περιλαμβάνει την ενημέρωση του διαχειριστή πακέτων με το `sudo apt-get update` και στη συνέχεια την εγκατάσταση του επίσημου πρόσθετου με το `sudo apt-get install docker-compose-plugin`.

Μόλις εγκατασταθεί, είναι πάντα καλή ιδέα να επαληθεύσετε ότι όλα λειτουργούν σωστά εκτελώντας την εντολή `docker compose version` στο τερματικό. Εάν επιστρέψει τον αριθμό έκδοσης, είστε έτοιμοι να ξεκινήσετε την ενορχήστρωση.

Διαχείριση κύκλου ζωής και βασικές εντολές

Η διαχείριση του περιβάλλοντος είναι πολύ διαισθητική χάρη σε μια σειρά από βασικές εντολές. Για να ξεκινήσουμε ολόκληρο το έργο στο παρασκήνιο, χρησιμοποιούμε την εντολή `docker compose up -d` . Αν θέλουμε να σταματήσουμε και να καθαρίσουμε τα πάντα (κοντέινερ και δίκτυα), η εντολή είναι `docker compose down`. Αν θέλουμε επίσης να διαγράψουμε τους τόμους για να ξεκινήσουμε από την αρχή, προσθέτουμε τη σημαία `--volumes`.

Για καθημερινή χρήση, το `docker compose logs` είναι πολύ χρήσιμο για την παρακολούθηση των όσων συμβαίνουν μέσα στα κοντέινερ και το `docker compose ps` είναι χρήσιμο για την προβολή της τρέχουσας κατάστασης των υπηρεσιών. Επιπλέον, εάν χρειάζεται να έχουμε πρόσβαση στην κονσόλα ενός κοντέινερ που εκτελείται, μπορούμε να χρησιμοποιήσουμε την εντολή `exec`.

Σύγκριση: Docker Compose εναντίον Kubernetes

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

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

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

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

Πρακτική περίπτωση: Δημιουργία στοίβας με Python και PHP

Για να το κατανοήσουμε καλύτερα αυτό, ας φανταστούμε ένα API που έχει δημιουργηθεί με Flask (Python) και επιστρέφει μια λίστα με φρούτα και έναν ιστότοπο PHP που καταναλώνει αυτό το API. Αρχικά, θα δημιουργούσαμε τον κώδικα API και το αντίστοιχο Dockerfile. Στη συνέχεια, θα δημιουργούσαμε τον κώδικα του ιστότοπου PHP.

Στο αρχείο compose.yaml, θα ορίζαμε την υπηρεσία fruit (που δημιουργήθηκε από τον φάκελο Python) και την υπηρεσία website (χρησιμοποιώντας μια επίσημη εικόνα PHP με Apache). Αντιστοιχίζοντας τις θύρες (για παράδειγμα, 5000 για τον ιστότοπο και 5001 για το API) και καθορίζοντας την εξάρτηση του ιστότοπου από το API, διασφαλίζουμε ότι ολόκληρο το οικοσύστημα λειτουργεί άψογα με μία μόνο εντολή.

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

Απομακρυσμένος προγραμματιστής που χρησιμοποιεί φορητό υπολογιστή και smartphone λύνει το πρόβλημα του Docker Compose που λειτουργεί στον υπολογιστή μου.

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