Sobes.tech
Junior

როგორია თქვენი გამოცდილება Docker Compose-თან?

sobes.tech AI

პასუხი AI-სგან

მე ვიყენებ Docker Compose-ს მრავალკონტეინერული პროგრამების განსაზღვრისა და გაშვებისათვის. გამოცდილება მოიცავს:

  • ადგილობრივი გარემოს განვითარების: docker-compose.yml-ის შექმნა ყველა საჭირო სერვისის (backend, frontend, მონაცემთა ბაზა, cache) გასაშვებად ადგილობრივ განვითარებისთვის. ეს საშუალებას აძლევს სწრაფად ააშენოს გარემო, რომელიც იზოლირებულია ძირითადი სისტემიდან.
  • ტესტირება: Docker Compose-ის გამოყენება ტესტური გარემოების შექმნისთვის სხვადასხვა კონფიგურაციებით სერვისებისთვის.
  • გაყვანა Staging/Production-ში: მიუხედავად იმისა, რომ Production-ისთვის ხშირად გამოიყენება უფრო ძლიერი ორქესტრატორები (Kubernetes), საწყის ეტაპებზე ან მცირე პროექტებისთვის გამოვიყენე Docker Compose-ის გაშვება Staging სერვერებზე.

მაიდაფილდერების გამოყენების მაგალითები docker-compose.yml-ში:

  • services: კონტეინერების ჯგუფის განსაზღვრა.
  • image: Docker-ის გამოსახულების მითითება.
  • build: Dockerfile-დან გამოსახულების მშენებლობა.
  • ports: პორტების მეპინგი.
  • volumes: ვოლუმენების მონტაჟი მონაცემების შენახვის ან კოდის მონტაჟისთვის.
  • networks: მომხმარებლის ქსელების განსაზღვრა.
  • depends_on: სერვისებს შორის დამოკიდებულებების შექმნა.
  • environment: გარემოს ცვლადების გადაცემა კონტეინერში.

სადაც არის მარტივი კონფიგურაცია ვებ-აპლიკაციის და მონაცემთა ბაზისთვის:

services:
  webapp:
    build: ./webapp # მშენებლობა Dockerfile-დან webapp დირექტორიაში
    ports:
      - "80:80" # ჰოსტის 80 პორტის მეპინგი კონტეინერის 80 პორტზე
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb # გარემოს ცვლადის გადაცემა
    depends_on:
      - db # ვებ-აპლიკაცია დამოკიდებულია მონაცემთა ბაზაზე

  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 # სერვისების გაშვება ფონის რეჟიმში
ndocker compose down # გაჩერება და სერვისების წაშლა
docker compose build # გამოსახულებების მშენებლობა
docker compose logs <service_name> # კონკრეტული სერვისის ლოგების ნახვა
docker compose exec <service_name> <command> # ბრძანების შესრულება კონტეინერში

მე ვიცი Compose-ის სინტაქსის ვერსიები და მათი განსხვავებები. ასევე მესმის, როგორ გამოიყენოს .env ფაილები გარემოს ცვლადების მართვისთვის და როგორ გამოიყენოს პროფილები სხვადასხვა სერვისების ჯგუფების გასაშვებად.