Sobes.tech
Junior

Ποια είναι η εμπειρία σας με το Docker Compose;

sobes.tech AI

Απάντηση από AI

Χρησιμοποιώ το Docker Compose για τον ορισμό και την εκτέλεση εφαρμογών πολλαπλών κοντέινερ. Η εμπειρία μου περιλαμβάνει:

  • Ανάπτυξη τοπικού περιβάλλοντος: Δημιουργία αρχείου docker-compose.yml για την εκκίνηση όλων των απαραίτητων υπηρεσιών (backend, frontend, βάση δεδομένων, cache) για τοπική ανάπτυξη. Αυτό επιτρέπει την ταχεία δημιουργία ενός απομονωμένου περιβάλλοντος.
  • Δοκιμές: Χρήση του Docker Compose για τη δημιουργία δοκιμαστικών περιβαλλόντων με διαφορετικές διαμορφώσεις υπηρεσιών.
  • Ανάπτυξη σε staging/παραγωγή: Αν και για την παραγωγή συχνά χρησιμοποιούνται πιο ισχυροί ορχηστρωτές (όπως το Kubernetes), το Docker Compose έχει χρησιμοποιηθεί στα αρχικά στάδια ή για μικρά έργα για την ανάπτυξη σε staging servers.

Παραδείγματα χρήσης πεδίων στο docker-compose.yml:

  • services: Ορισμός ενός συνόλου κοντέινερ.
  • image: Ορισμός της εικόνας Docker που θα χρησιμοποιηθεί.
  • build: Κατασκευή εικόνας από ένα Dockerfile.
  • ports: Χαρτογράφηση θυρών.
  • volumes: Μόνταρε volumes για αποθήκευση δεδομένων ή τοποθέτηση πηγαίου κώδικα.
  • networks: Ορισμός προσαρμοσμένων δικτύων.
  • depends_on: Ορισμός εξαρτήσεων μεταξύ υπηρεσιών.
  • environment: Μεταβίβαση μεταβλητών περιβάλλοντος στο κοντέινερ.

Παράδειγμα απλής διαμόρφωσης για μια web εφαρμογή και μια βάση δεδομένων:

services:
  webapp:
    build: ./webapp # Κατασκευή από Dockerfile στον κατάλογο webapp
    ports:
      - "80:80" # Χαρτογράφηση θύρας 80 του host στη θύρα 80 του κοντέινερ
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb # Μεταβλητή περιβάλλοντος
    depends_on:
      - db # Η web εξαρτάται από τη βάση δεδομένων

  db:
    image: postgres:13 # Χρήση της εικόνας PostgreSQL
    volumes:
      - db_data:/var/lib/postgresql/data # Διατήρηση δεδομένων
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb

volumes:
  db_data: # Ορισμός ονόματου όγκου

Τυπικές εντολές:

docker compose up -d # Εκκίνηση υπηρεσιών σε λειτουργία background
docker compose down # Τερματισμός και διαγραφή υπηρεσιών
docker compose build # Κατασκευή εικόνων
docker compose logs <όνομα υπηρεσίας> # Προβολή logs συγκεκριμένης υπηρεσίας
docker compose exec <όνομα υπηρεσίας> <εντολή> # Εκτέλεση εντολής μέσα στο κοντέινερ

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