Compose команд (up, down, logs)
docker compose командуудыг мэдвэл олон container-тай аппликейшнийг хялбар удирдана. Энэ хичээлд өдөр тутам хэрэглэгддэг командуудыг бүрэн судална.
docker compose up
Service-уудыг эхлүүлэх үндсэн команд.
# Бүх service эхлүүлэх (foreground — log шууд харагдана)
docker compose up
# Background-д ажиллуулах (detached)
docker compose up -d
# Тодорхой service-ийг л эхлүүлэх
docker compose up -d db redis
# Image дахин build хийж эхлүүлэх
docker compose up -d --build
# Хэдэн жишээ ажиллуулах (scaling)
docker compose up -d --scale app=3
--build флаг нь Dockerfile өөрчлөгдсөн бол заавал хэрэгтэй — үгүй бол хуучин image ашиглана.
docker compose down
Service зогсоох ба устгах.
# Container ба network устгах (volume хадгална)
docker compose down
# Volume ч устгах
docker compose down -v
# Image ч устгах
docker compose down --rmi all
# Зөвхөн local image устгах
docker compose down --rmi local
Ялгаа:
docker compose stop— Container зогсоона, устгахгүй. Дахинstartхийж болно.docker compose down— Container ба network устгана.docker compose down -v— Бүгд + volume устгана. Өгөгдөл алдагдана!
docker compose logs
Service-ийн log харах.
# Бүх service-ийн log
docker compose logs
# Тодорхой service-ийн log
docker compose logs app
docker compose logs db
# Бодит цаг хугацаанд дагах
docker compose logs -f
docker compose logs -f app
# Сүүлийн N мөр
docker compose logs --tail 100 app
# Цаг хугацааны тэмдэгтэй
docker compose logs -t app
# Хамтад нь
docker compose logs -f -t --tail 50 app
Олон service-ийг нэгэн зэрэг дагах:
docker compose logs -f app db redis
Log-д service нэр угтвар болж харагдана:
app-1 | Server 3000 port дээр ажиллаж байна
db-1 | database system is ready to accept connections
redis-1 | Ready to accept connections
docker compose ps
Service-уудын төлөв харах.
# Бүх service-ийн товч мэдээлэл
docker compose ps
# Дэлгэрэнгүй
docker compose ps --all
# Зөвхөн нэг service
docker compose ps app
Гаралт:
NAME IMAGE COMMAND SERVICE STATUS PORTS
myapp-app-1 myapp:1.0 "node index.js" app running 0.0.0.0:3000->3000/tcp
myapp-db-1 postgres:16 "docker-entrypoint.s…" db running 5432/tcp
myapp-redis-1 redis:7 "docker-entrypoint.s…" redis running 6379/tcp
docker compose exec
Ажиллаж байгаа container дотор команд ажиллуулах.
# Interactive shell нээх
docker compose exec app sh
docker compose exec db bash
# Нэг команд ажиллуулах
docker compose exec app node --version
docker compose exec db psql -U postgres -d mydb
# PostgreSQL дотор SQL ажиллуулах
docker compose exec db psql -U postgres -c "SELECT COUNT(*) FROM users;"
# Root хэрэглэгчээр нэвтрэх
docker compose exec --user root app sh
docker compose build
Image build хийх (ажиллуулахгүй).
# Бүх service build хийх
docker compose build
# Тодорхой service build хийх
docker compose build app
# Cache ашиглахгүй
docker compose build --no-cache app
# Build аргумент дамжуулах
docker compose build --build-arg NODE_ENV=production app
docker compose pull
Registry-аас image шинэчлэх.
# Бүх image татах
docker compose pull
# Тодорхой service-ийн image татах
docker compose pull db redis
docker compose restart
Service дахин эхлүүлэх.
# Бүх service дахин эхлүүлэх
docker compose restart
# Тодорхой service
docker compose restart app
# Хугацааны хязгаарт зогсоох (секунд)
docker compose restart -t 30 app
docker compose stop / start
Container зогсоох ба дахин эхлүүлэх (устгахгүй).
# Зогсоох
docker compose stop
docker compose stop app
# Эхлүүлэх (зогссон container)
docker compose start
docker compose start app db
docker compose run
Нэг удаагийн ажиллуулалт — шинэ container үүсгэж команд ажиллуулаад зогсоно.
# Database migration ажиллуулах
docker compose run --rm app npm run migrate
# Test ажиллуулах
docker compose run --rm app npm test
# Тодорхой команд
docker compose run --rm db psql -U postgres
--rm — дуусаад container автоматаар устна.
docker compose config
Compose файлын тохиргоог шалгах — .env хувьсагчид орлуулагдсан эцсийн тохиргоог харуулна.
docker compose config
# Зөвхөн service нэрсийг харах
docker compose config --services
# Зөвхөн volume нэрсийг харах
docker compose config --volumes
Debug хийхэд маш хэрэгтэй — .env файлын утгууд зөв орж байгаа эсэхийг шалгана.
Өдөр тутмын workflow
Хөгжүүлэлт эхлүүлэх:
docker compose up -d
docker compose logs -f app
Код өөрчилсний дараа дахин build:
docker compose up -d --build app
docker compose logs -f app
Алдаа дибаг хийх:
# Log харах
docker compose logs --tail 50 app
# Container дотор орох
docker compose exec app sh
# Environment variable шалгах
docker compose exec app env | grep DB
Бүгдийг зогсоох:
# Хадгалалт хамт зогсоох (өгөгдөл хадгалагдана)
docker compose down
# Бүгдийг цэвэрлэх (шинэ эхлэл)
docker compose down -v
Хурдан лавлах хүснэгт
| Команд | Тайлбар |
| ------------------------------ | ------------------------------ |
| docker compose up -d | Background-д эхлүүлэх |
| docker compose up -d --build | Дахин build хийж эхлүүлэх |
| docker compose down | Зогсоож устгах |
| docker compose down -v | Зогсоож устгах + volume устгах |
| docker compose logs -f | Log бодит цаг хугацаанд дагах |
| docker compose ps | Төлөв харах |
| docker compose exec app sh | Container дотор shell нээх |
| docker compose build | Image build хийх |
| docker compose restart app | Service дахин эхлүүлэх |
| docker compose run --rm app | Нэг удаагийн ажиллуулалт |
| docker compose config | Тохиргоо шалгах |
Дараагийн хичээлд:
Multi-stage build — нэг Dockerfile-д хэд хэдэн FROM ашиглан жижиг, аюулгүй production image үүсгэнэ.