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.
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:$ docker compose up # barcha servislarni birgalikda ishga tushiradi
$ docker compose down # barchasini to'xtatadi va o'chiradiservices: 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