GoDasturchi
Docker Compose Basics

Docker Compose Basics

Docker Compose asoslari

Haqiqiy ilova kamdan-kam hollarda yagona konteynerdan iborat bo'ladi — odatda sizga Go serveringizdan tashqari, ma'lumotlar bazasi (masalan PostgreSQL) va kesh (masalan Redis) ham kerak bo'ladi. Har birini qo'lda, alohida docker run buyruqlari bilan ishga tushirish va ularni bir-biriga "tanishtirish" — chalkash va xatolarga moyil.

Docker Compose — bir nechta konteynerni BITTA fayl orqali, birgalikda tasvirlash va boshqarish vositasi. Buni orkestr dirijyoriga o'xshating: dirijyor har bir musiqachiga alohida-alohida gapirib o'tirmaydi, balki bitta partitura (nota yozuvi) orqali hamma birgalikda, kelishilgan holda ijro etadi.

docker-compose.yml
services:
  server:
    build: .
    ports:
      - "8080:8080"
    environment:
      - DATABASE_URL=postgres://db:5432/myapp
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      - POSTGRES_PASSWORD=sekret
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:
terminal
$ docker compose up      # barcha servislarni birgalikda ishga tushiradi
$ docker compose down    # barchasini to'xtatadi va o'chiradi

services: ostida har bir konteyner ta'riflanadi: server — o'zimizning Dockerfile'imizdan quriladi (build: .), db esa tayyor PostgreSQL image'idan ishga tushadi. depends_on: [db] — "server'ni ishga tushirishdan oldin, avval dbni ishga tushir" degani. Eng muhimi: Compose ichida server konteyneri db konteyneriga oddiy db nomi orqali murojaat qila oladi (postgres://db:5432/...) — Compose ularni avtomatik bir xil "tarmoq"ga ulaydi, IP-manzillarni qo'lda sozlash shart emas.

Key Takeaway

Key Takeaway:

Docker Compose bir nechta konteynerni (server, baza, kesh) bitta YAML faylda tasvirlab, ularni bitta buyruq (docker compose up) bilan birgalikda ishga tushiradi va bir-biriga avtomatik ulaydi.

NEXT UP

Compose Service Discovery

Docker Compose Basics

Docker Compose asoslari

Haqiqiy ilova kamdan-kam hollarda yagona konteynerdan iborat bo'ladi — odatda sizga Go serveringizdan tashqari, ma'lumotlar bazasi (masalan PostgreSQL) va kesh (masalan Redis) ham kerak bo'ladi. Har birini qo'lda, alohida docker run buyruqlari bilan ishga tushirish va ularni bir-biriga "tanishtirish" — chalkash va xatolarga moyil.

Docker Compose — bir nechta konteynerni BITTA fayl orqali, birgalikda tasvirlash va boshqarish vositasi. Buni orkestr dirijyoriga o'xshating: dirijyor har bir musiqachiga alohida-alohida gapirib o'tirmaydi, balki bitta partitura (nota yozuvi) orqali hamma birgalikda, kelishilgan holda ijro etadi.

docker-compose.yml
services:
  server:
    build: .
    ports:
      - "8080:8080"
    environment:
      - DATABASE_URL=postgres://db:5432/myapp
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      - POSTGRES_PASSWORD=sekret
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:
terminal
$ docker compose up      # barcha servislarni birgalikda ishga tushiradi
$ docker compose down    # barchasini to'xtatadi va o'chiradi

services: ostida har bir konteyner ta'riflanadi: server — o'zimizning Dockerfile'imizdan quriladi (build: .), db esa tayyor PostgreSQL image'idan ishga tushadi. depends_on: [db] — "server'ni ishga tushirishdan oldin, avval dbni ishga tushir" degani. Eng muhimi: Compose ichida server konteyneri db konteyneriga oddiy db nomi orqali murojaat qila oladi (postgres://db:5432/...) — Compose ularni avtomatik bir xil "tarmoq"ga ulaydi, IP-manzillarni qo'lda sozlash shart emas.

Key Takeaway

Key Takeaway:

Docker Compose bir nechta konteynerni (server, baza, kesh) bitta YAML faylda tasvirlab, ularni bitta buyruq (docker compose up) bilan birgalikda ishga tushiradi va bir-biriga avtomatik ulaydi.

NEXT UP

Compose Service Discovery