linguaielts-api / README.md
AnhviNguyen
fix listening-admin-key
65d3935
|
Raw
History Blame Contribute Delete
3.11 kB
metadata
title: LinguaIELTS API
emoji: 📚
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false

LinguaIELTS

Nền tảng luyện thi IELTS — FastAPI backend + Vue frontend, chạy qua Docker Compose.

Yêu cầu

  • Docker Desktop (Windows/macOS) hoặc Docker Engine + Compose plugin (Linux)
  • File .env ở thư mục gốc repo (copy từ .env.example nếu có)

Chạy toàn bộ stack

# Từ thư mục gốc repo (DATN/)
docker compose up -d

Ứng dụng: http://localhost (gateway nginx, port 80).

Rebuild sau khi sửa code

Chỉ sửa frontend (Vue/CSS):

docker compose up -d --build frontend
docker compose restart gateway

Chỉ sửa backend (Python/API):

docker compose up -d --build api
docker compose restart gateway

Sửa cả hai hoặc muốn build lại sạch:

docker compose up -d --build
docker compose restart gateway

Lưu ý: Sau khi recreate container api hoặc frontend, nên restart gateway để nginx nhận IP mới (hoặc dùng nginx.docker.conf đã bật Docker DNS resolver).

Build lại frontend không dùng cache (khi vẫn thấy giao diện cũ):

docker compose build --no-cache frontend
docker compose up -d frontend

Kiểm tra container đang chạy

docker compose ps

Cột STATUS nên có Up và (với api/gateway/db) healthy.

Service Vai trò
gateway Nginx, port 80 → http://localhost
frontend SPA Vue (static)
api FastAPI + ML inline (speaking/shadowing)
db PostgreSQL

Stack gọn: không Redis, MinIO, PgBouncer, Celery worker/beat — phù hợp demo & deploy nhỏ (<50 users, Fly.io).

Kiểm tra đã deploy bản frontend mới

1. Xem container vừa recreate chưa

docker compose ps frontend

Cột CREATED phải là vài giây/phút trước (không phải vài giờ).

2. Xem HTML đang serve bundle nào

PowerShell:

(Invoke-WebRequest -Uri "http://localhost/" -UseBasicParsing).Content | Select-String "index-"

Kết quả có dạng index-XXXXX.jsindex-XXXXX.css — hash đổi sau mỗi lần npm run build.

3. Hard refresh trình duyệt

Ctrl + Shift + R (hoặc tab ẩn danh) để tránh cache JS/CSS cũ.

Xem log khi lỗi

# Tất cả service
docker compose logs -f --tail=100

# Một service
docker compose logs -f api
docker compose logs -f frontend
docker compose logs -f gateway

Dừng / khởi động lại

docker compose down          # dừng, giữ volume DB
docker compose down -v       # dừng + xóa volume (mất data DB)
docker compose restart api   # restart một service

Dev local không Docker (tùy chọn)

Frontendfronted/README.md (npm run devhttp://localhost:5173).

Backendbackend/README.md.

Khi dev frontend local, API vẫn có thể trỏ qua proxy Vite; production/Docker dùng gateway tại port 80.