Yêu cầu cơ bản
- Docker - một công cụ mạnh mẽ và dễ sử dụng
- Sơ đồ Markdown - cấu trúc dễ hiểu
Quá trình xây dựng cơ bản
Khởi tạo và cấu hình thư mục ban đầu
Thực thi các lệnh sau để bắt đầu:
# Tạo một thư mục làm việc (tốt nhất là thư mục git để dễ dàng upload)
mkdir wiki_container && cd wiki_container
# Tạo và clone dự án từ Git
git clone https://test.dfly.com/shuaige/gitbook.git && cd gitbook
# Thực hiện khởi tạo
docker run --rm -v "$PWD:/wiki_container" -p 8080:8080 billryan/gitbook gitbook init
Sau khi thực hiện xong, sẽ tạo ra hai file:
- README.md - Trang chủ mặc định
- SUMMARY.md - Cấu trúc menu sidebar
Cấu trúc thư mục đề xuất
wiki_container/
├── README.md
├── SUMMARY.md
└── docs/
├── bai_viet1/
│ ├── bai_viet1.md
│ └── bai_viet1_1.png
└── bai_viet2/
├── bai_viet2.md
└── bai_viet2_1.png
Cấu trúc trang chủ và menu navigation
Trang chủ README.md
# Cách đọc Wiki này
## Nội dung bao gồm
- Tóm tắt của mỗi bài viết
- Phân loại rõ ràng để tra cứu dễ dàng
## Hướng dẫn tìm kiếm
- Sử dụng phím tắt Ctrl + F để tìm kiếm nhanh
- Tìm kiếm trực tiếp từ thanh tìm kiếm ở góc trái
## Bài viết đáng chú ý
| Tên bài viết | Mô tả |
| :----------- | :--- |
| [Ảnh lung linh](./docs/bai_viet1/bai_viet1.md) | Chia sẻ những hình ảnh tuyệt đẹp |
| [Cảnh đẹp](./docs/bai_viet2/bai_viet2.md) | Collection những phong cảnh thiên nhiên |
SUMMARY.md - Cấu trúc sidebar
# Menu chính
- [Trang chủ Wiki](README.md)
- [Ảnh lung linh](./docs/bai_viet1/bai_viet1.md)
- [Cảnh đẹp](./docs/bai_viet2/bai_viet2.md)
Quá trình sản xuất và triển khai
Khởi động server web để xem và chỉnh sửa
# Bắt đầu server
docker run --rm -v "$PWD:/wiki_container" -p 8080:8080 billryan/gitbook gitbook serve
# Truy cập qua trình duyệt:
# http://localhost:8080
Tạo file tĩnh
# Tạo file tĩnh
docker run --rm -v "$PWD:/wiki_container" -p 8080:8080 billryan/gitbook gitbook build
File tĩnh sẽ được tạo ra trong thư mục _book:
wiki_container/
└── _book/
├── index.html
└── các file tĩnh khác
Cấu hình Nginx để phục vụ static
location /wiki_container {
root /wiki_container/_book;
index index.html;
}