Docker Compose: chạy cả stack app + database bằng 1 lệnh
VietDevOps
0:00 / 0:00
Docker Compose: chạy cả stack app + database bằng 1 lệnh
99 просмотров · 6 дней назад
VietDevOps
1 подписчик
99 просмотров · 6 дней назад
Chạy app + Postgres + Redis bằng tay nghĩa là cả chục lệnh docker run dài ngoằng — quên một cờ là toang. Video này hướng dẫn Docker Compose: khai báo toàn bộ stack trong một file docker-compose.yml duy nhất, rồi chạy tất cả bằng một lệnh docker compose up.
Trong video: vì sao chạy nhiều container bằng tay là cực hình, cấu trúc file docker-compose.yml (services, networks, volumes), file thật cho stack app Node + Postgres + Redis, 6 lệnh Compose phải thuộc (up, ps, logs, exec, down, up --build), demo chạy thật và giải thích vì sao các service tự thấy nhau qua tên, volume giữ dữ liệu khi down, biến môi trường với file .env, file override cho dev/production, và cái bẫy depends_on không chờ database sẵn sàng.
⏱ Mục lục:
00:00 – Mở đầu: chạy nhiều container bằng tay là cực hình
01:50 – docker-compose.yml: cấu trúc cơ bản
03:34 – File thật: app + Postgres + Redis
05:31 – 6 lệnh Compose phải thuộc
07:27 – Chạy thật: service tự thấy nhau
09:16 – Volume, .env và file override
11:09 – Tóm tắt + video tiếp theo
💻 Lệnh và file trong video (copy dùng ngay):
-- File docker-compose.yml hoàn chỉnh (stack app + Postgres + Redis):
services:
app:
build: .
ports:
"3000:3000"
environment:
DATABASE_URL: postgres://db:5432/appdb
REDIS_URL: redis://cache:6379
depends_on:
db
cache
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: appuser
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: appdb
volumes:
pgdata:/var/lib/postgresql/data
cache:
image: redis:7-alpine
volumes:
pgdata:
-- File .env (đặt cùng thư mục, cho vào .gitignore, không commit):
POSTGRES_PASSWORD=mat-khau-manh-123
-- Khởi động cả stack (build lại image app):
docker compose up -d --build
-- Xem trạng thái các container của project:
docker compose ps
-- Xem log (theo dõi liên tục):
docker compose logs -f app
-- Chạy lệnh trong container đang chạy (ví dụ vào Postgres):
docker compose exec db psql -U appuser -d appdb
-- Dừng và xóa container + network (GIỮ volume, dữ liệu còn):
docker compose down
-- Xóa sạch cả volume (reset database, cẩn thận với dữ liệu thật):
docker compose down -v
-- Kiểm tra file sau khi merge biến môi trường và override:
docker compose config
-- Chạy với file override cho production:
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
-- Chạy một lệnh một lần rồi thoát (ví dụ migration):
docker compose run app npm run migrate
-- Scale service app lên 3 bản copy:
docker compose up -d --scale app=3
📌 Video tiếp theo (video số 7): Multi-stage build — đi sâu kỹ thuật tách giai đoạn build và chạy để giảm một nửa dung lượng image, đo dung lượng trước sau cho bạn thấy con số. Đăng ký kênh VietDevOps để không bỏ lỡ series Docker từ con số 0!
Kênh VietDevOps — DevOps • Cloud • AI, song ngữ Việt–Anh. Video nói tiếng Việt, có phụ đề tiếng Việt & tiếng Anh.
#docker #dockercompose #devops #vietdevops #hocdocker #postgres #redis #cloud