Docker
AMG EduTech Docs

Docker

Chạy Máy chủ thi bằng Docker trên Linux hoặc Windows.

Với gói Docker, màn Giám thị hiện cùng một IP cho mọi Máy thi. Trên máy chủ Windows hoặc Linux, dùng gói Windows hoặc gói Linux thay cho Docker.

Bạn cần thư mục cấu hình do nhóm vận hành cấp, mkcert, và đã làm xong phần Chuẩn bị trước khi cài. Mỗi hệ điều hành cần thêm:

  • Trên Linux, Docker Engine và Docker Compose v2.
  • Trên Windows, Docker Desktop chạy trên WSL 2 với Docker Compose 2.24.4 trở lên. Bật Start Docker Desktop when you sign in, vì Docker Desktop chỉ chạy khi có người đăng nhập Windows.

Cài Máy chủ thi

Chạy mọi lệnh dưới đây trong thư mục cấu hình.

Mở cổng 18443

Trên Windows, chạy lệnh sau trong PowerShell quản trị:

New-NetFirewallRule -DisplayName "amg-runtime 18443" -Direction Inbound -Protocol TCP -LocalPort 18443 -RemoteAddress LocalSubnet -Action Allow

Trên Linux, mở cổng TCP 18443 cho LAN bằng tường lửa của máy.

Điền tệp cấu hình

Chép .env.example thành .env, rồi điền ba dòng sau:

DòngGiá trị
SYNC_GATEWAY_URL=Địa chỉ AMG-Cloud
LAN_HOST=IP LAN của máy chủ
IMAGE_TAG=Phiên bản do nhóm vận hành chỉ định

Trên Windows, xóa dấu # ở đầu dòng COMPOSE_FILE.

Tạo chứng chỉ

Thay <IP-LAN> bằng IP LAN của máy chủ:

mkcert -install
mkdir -p tls
mkcert -cert-file tls/lan.pem -key-file tls/lan-key.pem localhost 127.0.0.1 <IP-LAN>

Khởi động máy chủ

docker compose pull
docker compose up -d --wait

Lệnh kết thúc mà không báo lỗi khi máy chủ đã chạy. Mở https://<máy-chủ-LAN>:18443/server/ để kiểm tra.

Tiếp theo, đăng ký máy chủ rồi cài chứng chỉ trên Máy thi.

Quản lý máy chủ sau khi cài

ViệcLệnh
Xem logdocker compose logs -f exam-runtime caddy
Nâng cấpĐổi IMAGE_TAG trong .env, chạy docker compose pull, rồi chạy docker compose up -d --remove-orphans.

Không chạy docker compose down -v, docker volume rm hay docker volume prune trên máy chủ này. Các lệnh đó xóa danh tính thiết bị và những Bài làm chưa gửi về AMG-Cloud.

Khi gặp sự cố

Thông báoLàm gì
required variable SYNC_GATEWAY_URL is missing a valueĐiền tệp .env như bước 2.
bind source path does not exist kèm tlsTạo chứng chỉ như bước 3.
bind source path does not exist kèm /etc/hostnameTrên Windows, xóa dấu # ở dòng COMPOSE_FILE trong .env.
address already in useĐổi LAN_PORT trong .env, rồi chạy docker compose up -d.
CLOUD_UNREACHABLEKiểm tra Internet, DNS và tường lửa chiều ra.