ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ exercise set ကတော့ Basic exercise ထက် တစ်ဆင့်တက်ပြီး Compose, Volumes, Networking concept သုံးခုကို ပေါင်းစပ်သုံးရမယ့် practice ပါ။ Teaching အသစ်မဟုတ်ဘဲ compose-intro, compose-file, volumes, networking lesson တွေမှာ လေ့လာခဲ့တဲ့အရာတွေကို တစ်ခုတည်းသော project setup ထဲမှာ ပေါင်းသုံးကြည့်ရမှာပါ။ Service နှစ်ခုကို docker-compose.yml တစ်ခုတည်းထဲမှာ သတ်မှတ်ပြီး၊ database အတွက် data ကို volume နဲ့ persist လုပ်ကာ၊ service ချင်း network အတွင်းက service name နဲ့ တစ်ခုနဲ့တစ်ခု ဘယ်လို ချိတ်ဆက်တယ်ဆိုတာကို လက်တွေ့ စမ်းသပ်ရပါမယ်။ ဒီလို hands-on practice က real project setup ထဲမှာ Compose ကို ဘယ်လိုသုံးရမလဲဆိုတာကို ပိုပြီးရင်းနှီးစေပါတယ်။
လေ့ကျင့်ခန်းများ
Task 1 - app service (nginx လိုမျိုး) နဲ့ db service (postgres) နှစ်ခုပါတဲ့ docker-compose.yml ကို ကိုယ်တိုင်ရေးပါ၊ service နှစ်ခုစလုံးကို custom network တစ်ခုအောက်မှာ ထားပါ။ Task 2 - postgres service အတွက် named volume တစ်ခု ထည့်ပြီး docker compose down ပြန်လုပ်ပြီး docker compose up ပြန်လုပ်ကြည့်တဲ့အခါ data ဆက်ရှိနေကြောင်း စစ်ဆေးပါ။ Task 3 - docker compose exec app ping db (or curl) command run ကြည့်ပြီး service name (db) ကိုပဲသုံးပြီး တစ်ခုနဲ့တစ်ခု reach လုပ်နိုင်ကြောင်း confirm လုပ်ပါ။ Task 4 - environment variable (ဥပမာ POSTGRES_PASSWORD) ကို docker-compose.yml ထဲမှာ ထည့်ပြီး depends_on သုံးပြီး startup order ကို control လုပ်ကြည့်ပါ။
Code နမူနာ
# docker-compose.yml
version: "3.9"
services:
app:
image: nginx
ports:
- "8080:80"
networks:
- app-net
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: example
volumes:
- db-data:/var/lib/postgresql/data
networks:
- app-net
networks:
app-net:
volumes:
db-data:docker compose up ပြီးရင် app နဲ့ db service နှစ်ခုစလုံး running ဖြစ်ရမယ်၊ db ကို service name နဲ့ reach လုပ်လို့ရရမယ်၊ container down/up ပြန်လုပ်လည်း db data မပျောက်ဘဲ ကျန်ရှိနေရမယ်။၅ မိနစ် စမ်းကြည့်
5 minutes အတွင်း docker-compose.yml ကို docker compose down -v (volume ပါဖျက်) နဲ့ docker compose down (volume မဖျက်) ကွာခြားချက်ကို compare လုပ်ကြည့်ပါ၊ data ဘယ်အချိန်ပျောက်၊ ဘယ်အချိန်ကျန်လဲ သတိထားကြည့်ပါ။
သတိလေးတစ်ချက်
docker compose down -v ကို run လိုက်ရင် volume အားလုံးပါ ဖျက်ပစ်လိုက်တာမို့ real data ရှိနေတဲ့ project တွေမှာ -v flag ကို သတိထားပြီးမှသုံးပါ။