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 պորտին
    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 ֆայլերը շրջակա միջավայրի փոփոխականները կառավարելու համար և ինչպես կիրառել պրոֆիլները տարբեր ծառայությունների հավաքածուներ գործարկելու համար։