🌐 國際化 (i18n) - 從 5 種語言擴展到 65 種語言支援 - 新增:歐洲語系 (de, fr, es, it, pt, ru, nl, pl, tr, uk, cs, sv, da, fi, no, el, hu, ro, bg, hr, sk, sl, lt, lv, et, is, ga, cy, mt, mk, sq, ca, eu, gl, sr) - 新增:中東語系 (ar, he, fa) - 新增:南亞語系 (hi, bn, ta, te, mr, gu, kn, ml, ne, si) - 新增:東南亞語系 (th, vi, id, ms, fil, my, km, lo) - 新增:非洲語系 (af, sw, am, zu) - 完整翻譯所有 UI 文字 📖 文件系統 - 重構 README.md 為入口型首頁 - 新增 docs/getting-started.md - 快速入門指南 - 新增 docs/docker.md - Docker 部署指南 - 新增 docs/environment-variables.md - 環境變數說明 - 新增 docs/url-id-and-storage.md - 儲存結構說明 - 新增 docs/advanced-usage.md - 進階使用指南 - 更新 docs/i18n.md - 65 種語言清單 ✅ 建構驗證 - TypeScript 編譯通過 - Docker 建構通過
216 lines
3.7 KiB
Markdown
216 lines
3.7 KiB
Markdown
# Docker 配置指南
|
||
|
||
## Docker Image
|
||
|
||
ConvertX-CN 提供預建的 Docker Image,包含所有轉換依賴。
|
||
|
||
### 可用 Tag
|
||
|
||
| Tag | 說明 |
|
||
|-----|------|
|
||
| `convertx/convertx-cn:latest` | 最新穩定版 |
|
||
| `convertx/convertx-cn:v0.1.3` | 指定版本號 |
|
||
| `convertx/convertx-cn:v0.1.3-FULL` | 完整版(與 latest 相同) |
|
||
|
||
### Image 大小
|
||
|
||
由於內建完整依賴(LibreOffice、TexLive、FFmpeg 等),Image 約 **4-6 GB**。
|
||
|
||
---
|
||
|
||
## Docker Run
|
||
|
||
基本啟動命令:
|
||
|
||
```bash
|
||
docker run -d \
|
||
--name convertx-cn \
|
||
-p 3000:3000 \
|
||
-v ./data:/app/data \
|
||
-e TZ=Asia/Taipei \
|
||
-e ACCOUNT_REGISTRATION=true \
|
||
convertx/convertx-cn:latest
|
||
```
|
||
|
||
### 參數說明
|
||
|
||
| 參數 | 說明 |
|
||
|------|------|
|
||
| `-d` | 背景執行 |
|
||
| `--name convertx-cn` | 容器名稱 |
|
||
| `-p 3000:3000` | 連接埠映射 |
|
||
| `-v ./data:/app/data` | 資料持久化 |
|
||
| `-e TZ=Asia/Taipei` | 時區設定 |
|
||
|
||
---
|
||
|
||
## Docker Compose
|
||
|
||
### 基本配置
|
||
|
||
```yaml
|
||
services:
|
||
convertx:
|
||
image: convertx/convertx-cn:latest
|
||
container_name: convertx-cn
|
||
restart: unless-stopped
|
||
ports:
|
||
- "3000:3000"
|
||
volumes:
|
||
- ./data:/app/data
|
||
environment:
|
||
- TZ=Asia/Taipei
|
||
- JWT_SECRET=your-very-long-random-secret-key
|
||
- ACCOUNT_REGISTRATION=true
|
||
```
|
||
|
||
### 生產環境配置
|
||
|
||
```yaml
|
||
services:
|
||
convertx:
|
||
image: convertx/convertx-cn:latest
|
||
container_name: convertx-cn
|
||
restart: unless-stopped
|
||
ports:
|
||
- "3000:3000"
|
||
volumes:
|
||
- ./data:/app/data
|
||
environment:
|
||
- TZ=Asia/Taipei
|
||
- JWT_SECRET=${JWT_SECRET}
|
||
- ACCOUNT_REGISTRATION=false
|
||
- HTTP_ALLOWED=false
|
||
- AUTO_DELETE_EVERY_N_HOURS=24
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 4G
|
||
reservations:
|
||
memory: 2G
|
||
```
|
||
|
||
### 使用 Traefik 反向代理
|
||
|
||
```yaml
|
||
services:
|
||
convertx:
|
||
image: convertx/convertx-cn:latest
|
||
container_name: convertx-cn
|
||
restart: unless-stopped
|
||
volumes:
|
||
- ./data:/app/data
|
||
environment:
|
||
- TZ=Asia/Taipei
|
||
- JWT_SECRET=${JWT_SECRET}
|
||
- ACCOUNT_REGISTRATION=false
|
||
labels:
|
||
- "traefik.enable=true"
|
||
- "traefik.http.routers.convertx.rule=Host(`convert.example.com`)"
|
||
- "traefik.http.routers.convertx.entrypoints=websecure"
|
||
- "traefik.http.routers.convertx.tls.certresolver=letsencrypt"
|
||
- "traefik.http.services.convertx.loadbalancer.server.port=3000"
|
||
networks:
|
||
- traefik
|
||
|
||
networks:
|
||
traefik:
|
||
external: true
|
||
```
|
||
|
||
---
|
||
|
||
## 資料持久化
|
||
|
||
### Volume 結構
|
||
|
||
```
|
||
./data/
|
||
├── uploads/ # 上傳的原始檔案
|
||
├── output/ # 轉換後的檔案
|
||
└── convertx.db # SQLite 資料庫
|
||
```
|
||
|
||
### 備份
|
||
|
||
```bash
|
||
# 備份資料
|
||
docker cp convertx-cn:/app/data ./backup-$(date +%Y%m%d)
|
||
|
||
# 還原資料
|
||
docker cp ./backup-20240101/. convertx-cn:/app/data/
|
||
```
|
||
|
||
---
|
||
|
||
## 更新
|
||
|
||
### Docker Compose
|
||
|
||
```bash
|
||
docker compose pull
|
||
docker compose up -d
|
||
```
|
||
|
||
### Docker Run
|
||
|
||
```bash
|
||
docker pull convertx/convertx-cn:latest
|
||
docker stop convertx-cn
|
||
docker rm convertx-cn
|
||
docker run -d ... # 使用原本的參數
|
||
```
|
||
|
||
---
|
||
|
||
## 健康檢查
|
||
|
||
ConvertX-CN 提供健康檢查端點:
|
||
|
||
```bash
|
||
curl http://localhost:3000/healthcheck
|
||
```
|
||
|
||
可在 Docker Compose 中配置:
|
||
|
||
```yaml
|
||
services:
|
||
convertx:
|
||
# ...
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:3000/healthcheck"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
```
|
||
|
||
---
|
||
|
||
## 故障排除
|
||
|
||
### 記憶體不足
|
||
|
||
如果遇到 OOM(記憶體不足),請增加容器記憶體限制:
|
||
|
||
```yaml
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 8G
|
||
```
|
||
|
||
### 連接埠衝突
|
||
|
||
如果 3000 埠被占用,可更改映射:
|
||
|
||
```bash
|
||
-p 8080:3000 # 使用 8080 埠
|
||
```
|
||
|
||
### 權限問題
|
||
|
||
確保 data 目錄有正確權限:
|
||
|
||
```bash
|
||
chmod -R 777 ./data
|
||
```
|