
Hướng dẫn cài đặt Mojo🔥 bằng Docker Compose trên Windows (2026)
Mojo — ngôn ngữ lập trình “siêu tốc” của Modular, kết hợp sức mạnh của Python với hiệu năng ngang C++. Tuy nhiên, Mojo hiện chỉ hỗ trợ chính thức trên Linux và macOS. Vậy làm sao để lập trình Mojo trên Windows?
Câu trả lời: Docker Compose. Bài viết này hướng dẫn bạn từng bước cài đặt môi trường phát triển Mojo hoàn chỉnh trên Windows — không cần WSL phức tạp, không cần dual-boot Linux.
👉 Nếu bạn chưa biết Mojo là gì, hãy đọc bài Ngôn ngữ lập trình Mojo🔥: Python++ nhanh hơn Python đến 68.000 lần trước nhé!
Nội dung chính
Tại sao dùng Docker cho Mojo trên Windows?
Mojo SDK yêu cầu hệ điều hành Linux (Ubuntu 22.04+). Trên Windows, bạn có 3 lựa chọn:
- WSL2 — Cài Windows Subsystem for Linux, rồi cài Mojo trong đó
- Virtual Machine — Chạy Linux trong VMware/VirtualBox
- Docker ← Lựa chọn tốt nhất
Docker vượt trội ở các điểm:
- Nhẹ hơn VM nhiều lần — khởi động chỉ vài giây
- Dễ chia sẻ, tái tạo môi trường — đồng nghiệp chỉ cần
docker compose up - Quản lý bằng file
docker-compose.yml— version control được - Không “ô nhiễm” máy host
- Hỗ trợ tích hợp VS Code qua Dev Containers
Yêu cầu hệ thống
- Windows 10/11 (64-bit, bản Pro/Enterprise/Education hoặc Home có WSL2 backend)
- Docker Desktop for Windows (phiên bản mới nhất)
- RAM: tối thiểu 8GB (khuyến nghị 16GB)
- Ổ cứng: tối thiểu 10GB trống
- CPU: hỗ trợ virtualization (VT-x/AMD-V)
Bước 1: Cài đặt Docker Desktop
Truy cập docker.com/products/docker-desktop và tải Docker Desktop for Windows. Khi cài, chọn Use WSL 2 instead of Hyper-V (khuyến nghị). Sau khi cài xong, khởi động lại máy.
Kiểm tra Docker trong PowerShell:
docker --version
docker compose versionKết quả mong đợi:
Docker version 27.x.x, build xxxxxxx
Docker Compose version v2.x.xBước 2: Tạo cấu trúc dự án
Tạo thư mục dự án trên Windows:
mkdir C:\Projects\mojo-dev
cd C:\Projects\mojo-devDockerfile
Tạo file Dockerfile:
# Mojo Development Environment
FROM ubuntu:22.04
# Tránh interactive prompts khi cài packages
ENV DEBIAN_FRONTEND=noninteractive
# Cài đặt dependencies cơ bản
RUN apt-get update && apt-get install -y \
curl git python3 python3-pip python3-venv wget nano \
&& rm -rf /var/lib/apt/lists/*
# Cài pixi (package manager cho Mojo)
RUN curl -fsSL https://pixi.sh/install.sh | bash
ENV PATH="/root/.pixi/bin:${PATH}"
# Tạo thư mục workspace
WORKDIR /workspace
# Tạo Mojo project với pixi
RUN pixi init mojo-project \
-c https://conda.modular.com/max-nightly/ \
-c conda-forge \
&& cd mojo-project \
&& pixi add mojo
# Set working directory vào project
WORKDIR /workspace/mojo-project
# Giữ container chạy
CMD ["bash"]docker-compose.yml
services:
mojo:
build:
context: .
dockerfile: Dockerfile
container_name: mojo-dev
volumes:
# Mount thư mục code từ Windows vào container
- ./code:/workspace/mojo-project/code
stdin_open: true # Giữ stdin mở (tương đương -i)
tty: true # Cấp pseudo-TTY (tương đương -t)
working_dir: /workspace/mojo-project
deploy:
resources:
limits:
memory: 4GTạo thư mục chứa code:
mkdir codeCấu trúc dự án cuối cùng:
C:\Projects\mojo-dev\
├── Dockerfile
├── docker-compose.yml
└── code\ ← Thư mục chứa code Mojo của bạnBước 3: Build và khởi động container
# Build image (lần đầu mất khoảng 5-10 phút)
docker compose build
# Khởi động container ở background
docker compose up -d
# Kiểm tra container đang chạy
docker compose psBước 4: Kiểm tra Mojo đã hoạt động
Vào container:
docker compose exec mojo bashKiểm tra phiên bản:
pixi run mojo --version
# Output: mojo 2026.1.x (xxxxxxxx)Thử Mojo REPL:
pixi run mojo
# Trong REPL:
1> print("Hello from Mojo on Windows! 🔥")
Hello from Mojo on Windows! 🔥Bước 5: Viết chương trình Mojo đầu tiên
5.1 Hello World
Tạo file code/hello.mojo trên Windows (dùng VS Code hoặc bất kỳ editor nào):
# hello.mojo - Chương trình Mojo đầu tiên trên Windows!
def main():
print("🔥 Xin chào từ Mojo trên Docker!")
print("Mojo chạy thành công trên Windows!")
# Kiểm tra kiểu dữ liệu cơ bản
var name: String = "Mojo Developer"
var version: Int = 2026
print("Xin chào, " + name + "! Chào mừng đến với Mojo " + str(version))Chạy trong container:
pixi run mojo run code/hello.mojoKết quả:
🔥 Xin chào từ Mojo trên Docker!
Mojo chạy thành công trên Windows!
Xin chào, Mojo Developer! Chào mừng đến với Mojo 20265.2 Benchmark — So sánh tốc độ Mojo
Tạo file code/benchmark.mojo để kiểm tra hiệu năng:
# benchmark.mojo - So sánh tốc độ tính toán
from time import now
def fibonacci_mojo(n: Int) -> Int:
if n <= 1:
return n
var a: Int = 0
var b: Int = 1
for _ in range(2, n + 1):
var temp = a + b
a = b
b = temp
return b
def main():
print("=" * 50)
print("🔥 MOJO BENCHMARK trên Docker/Windows")
print("=" * 50)
var iterations = 1_000_000
var start = now()
var total: Int = 0
for i in range(iterations):
total += fibonacci_mojo(100)
var elapsed_ms = (now() - start) / 1_000_000
print("\n📊 Kết quả:")
print(" Fibonacci(100) x " + str(iterations) + " lần")
print(" Thời gian: " + str(elapsed_ms) + " ms")
print("\n✅ Mojo hoạt động hoàn hảo trên Docker/Windows!")pixi run mojo run code/benchmark.mojo5.3 Kiểm tra tích hợp Python
Một trong những điểm mạnh nhất của Mojo là gọi được thư viện Python trực tiếp. Tạo file code/python_interop.mojo:
# python_interop.mojo - Gọi Python từ Mojo
from python import Python
def main():
print("🐍 Kiểm tra tích hợp Python từ Mojo\n")
# Import thư viện Python chuẩn
var sys = Python.import_module("sys")
print("Python version: " + str(sys.version))
# Dùng math module
var math = Python.import_module("math")
print("Pi = " + str(math.pi))
print("sqrt(144) = " + str(math.sqrt(144)))
# Dùng datetime
var datetime = Python.import_module("datetime")
var now_time = datetime.datetime.now()
print("Thời gian hiện tại: " + str(now_time))
# Tạo và xử lý JSON
var json_mod = Python.import_module("json")
var data = Python.dict()
data["language"] = "Mojo"
data["platform"] = "Docker on Windows"
data["status"] = "Working!"
print("\nJSON output: " + str(json_mod.dumps(data, indent=2)))
print("\n✅ Python interop hoạt động tốt!")Nếu thấy output Python version, Pi, thời gian, và JSON — môi trường Mojo của bạn đã hoàn chỉnh! 🎉
Các lệnh Docker Compose thường dùng
| Lệnh | Mô tả |
|---|---|
docker compose up -d | Khởi động container (chạy nền) |
docker compose exec mojo bash | Vào terminal container |
docker compose stop | Dừng container (giữ data) |
docker compose down | Xóa container (giữ image) |
docker compose down -v | Xóa container + volumes |
docker compose build --no-cache | Build lại image từ đầu |
docker compose logs | Xem logs |
Kết nối VS Code với container
Để có trải nghiệm lập trình tốt nhất, kết nối VS Code trực tiếp vào container:
- Cài extension Dev Containers (
ms-vscode-remote.remote-containers) và Mojo (modular-mojotools.vscode-mojo) - Nhấn
F1→ gõ Dev Containers: Attach to Running Container - Chọn container
mojo-dev - VS Code sẽ mở cửa sổ mới kết nối vào container
- Mở thư mục
/workspace/mojo-project/code
Giờ bạn có thể viết code Mojo trên Windows với syntax highlighting, autocompletion, và chạy trực tiếp trong container! 🔥
Xử lý lỗi thường gặp
Docker build bị timeout
$env:DOCKER_CLIENT_TIMEOUT=300
$env:COMPOSE_HTTP_TIMEOUT=300
docker compose buildContainer bị "Exited"
# Kiểm tra logs
docker compose logs mojo
# Khởi động lại
docker compose restartLỗi "permission denied" với file mount
Mở Docker Desktop → Settings → Resources → File Sharing, thêm đường dẫn C:\Projects\mojo-dev.
Thiếu RAM khi build
Mở Docker Desktop → Settings → Resources → tăng Memory lên 4-6GB.
Fullstack Station Tips 💡
- Mount thư mục code, không mount cả project: Chỉ mount thư mục
code/vào container. Pixi project files nên ở trong container để tránh xung đột path Linux/Windows. - Dùng
.dockerignore: Tạo file.dockerignoređể loại bỏnode_modules,.git, etc. khỏi build context. - Pin version Mojo: Trong Dockerfile, thay
pixi add mojobằngpixi add 'mojo>=2026.1,<2027'để tránh breaking changes. - Tự động khởi động REPL: Thêm
command: pixi run mojovàodocker-compose.yml— container sẽ vào REPL ngay khi khởi động. - Multi-stage build cho production: Dùng 2 stage — stage 1 build binary, stage 2 chỉ chứa runtime. Image nhẹ hơn nhiều lần.
Bài viết liên quan về Mojo
- 📖 Ngôn ngữ lập trình Mojo🔥: Python++ nhanh hơn Python đến 68.000 lần
- 📖 Mojo 2024: Cập nhật tính năng và hiệu suất mới nhất
- 📖 Mojo 2025: Roadmap và tương lai ngôn ngữ AI
Bài viết được tổng hợp bởi Fullstack Station. Nguồn tham khảo: Modular Docs, Modular Blog.
