Ops Cheatsheet
Lệnh hay dùng sau khi production đã deploy. Trên server
/opt/booking-system.
Setup alias (1 lần)
Tránh gõ docker compose -f docker-compose.prod.yml mỗi lệnh:
echo "alias dc='docker compose -f /opt/booking-system/docker-compose.prod.yml'" >> ~/.bashrc
source ~/.bashrc
Sau đó dùng dc thay cho docker compose -f docker-compose.prod.yml mọi nơi dưới.
🔐 Super-admin
# Tạo / reset super-admin (interactive: nhập email + password ≥6 ký tự)
dc exec api yarn reset:superadmin
Login: https://glamvoo.com/admin với credential vừa tạo.
🌱 Seed dữ liệu
# Seed demo data (tenants + services + resources mẫu)
dc exec api yarn seed
# Seed daily test bookings (testing only)
dc exec api yarn seed:daily
⚠️
yarn seedcó thể wipe data. Production thật KHÔNG nên chạy — chỉ dùng nếu DB rỗng hoặc demo env.
🗄️ Database
# Xem migration status
dc exec api yarn db:status
# Apply migration mới (deploy.sh auto chạy, manual chỉ khi cần)
dc exec api yarn db:migrate:deploy
# Prisma Studio (web UI view DB) — port 5555 internal
dc exec api yarn db:studio
# Trên máy local: ssh -L 5555:localhost:5555 user@server → mở http://localhost:5555
# psql trực tiếp từ host
psql "postgresql://glamvoo_user:PASSWORD@localhost:5432/glamvoo"
📋 Logs
dc logs -f # tất cả service, follow
dc logs -f api # chỉ api (mọi replicas)
dc logs --tail 100 api # 100 dòng cuối
dc logs --since 30m api # 30 phút qua
dc logs --since 2026-05-09T10:00:00 api
🩺 Health & Status
dc ps # status containers
curl https://glamvoo.com/api/health | jq # health public
dc exec api curl -s http://localhost:3010/api/health | jq # health internal
docker stats # CPU/RAM realtime
🔧 Debug
dc exec api sh # shell vào api
dc exec web sh # shell vào web
dc exec redis redis-cli # redis CLI
dc exec api node -e "console.log(process.env.DATABASE_URL)" # inspect env
dc inspect api # config + state full
🚀 Deploy / Restart / Scale
./deploy.sh # deploy code mới (sau khi GHA xanh)
dc up -d # reload sau khi đổi .env (Docker auto detect)
dc restart api # restart 1 service
dc restart web
API_REPLICAS=4 ./deploy.sh # scale lên 4 api replicas
IMAGE_TAG=sha-abc123 ./deploy.sh # rollback về SHA cụ thể
dc stop # stop tất cả (giữ container + volume)
dc start # start lại
dc down # stop + xoá container (giữ volume)
dc down -v # ⚠️ stop + xoá container + volume (DESTRUCTIVE)
🧹 Cleanup
docker image prune -f # xoá image dangling
docker image prune -af --filter "until=168h" # xoá image > 1 tuần
docker builder prune -af # xoá build cache
docker system df # disk usage Docker
🔄 Bull Board (queue admin)
https://glamvoo.com/api/queues
Login: BULL_BOARD_USER / BULL_BOARD_PASS từ .env. Xem email/notification queue, retry failed jobs.
🔒 Cert renewal (manual nếu cần)
Certbot auto-renew qua systemd timer (certbot.timer). Force renew:
sudo certbot renew
# Sau khi renew, reload nginx để pick cert mới
dc exec nginx nginx -s reload
🆘 Khi vướng
| Triệu chứng | Lệnh check | Fix |
|---|---|---|
| Container restart loop | dc logs api |
Xem error → fix env hoặc image |
| 502 trên public | dc ps → service unhealthy |
dc logs <service>, đợi healthcheck |
Can't reach DB |
dc exec api curl -s localhost:3010/api/health |
Check pg_hba.conf + UFW + .env DATABASE_URL |
| Disk đầy | docker system df |
docker image prune -af --filter "until=168h" |
| Throttler block bất thường | dc logs redis |
Restart redis sẽ reset counter (TTL 60s) |
| Migration conflict | dc exec api yarn db:status |
Manual fix qua psql |
Cross-reference
deploy-checklist.md— Setup lần đầudocker-deploy.md— Chi tiết Docker deploy + rolling updatetroubleshooting.md— Bug class chung (không Docker-specific)