- 新增 deploy/ 目录包含 Docker 部署配置、数据库脚本、部署脚本 - 更新 .gitignore 忽略 deploy 构建产物 - 添加 AGENTS.md AI Agent 指南 - 添加项目构建脚本 build.sh
298 lines
6.1 KiB
Markdown
298 lines
6.1 KiB
Markdown
# XL监狱综合管理平台 - 部署前检查清单
|
|
|
|
## 🖥️ 远程服务器架构检查
|
|
|
|
由于无法直接SSH连接,请手动运行以下命令检查远程服务器架构:
|
|
|
|
```bash
|
|
ssh root@192.168.10.150 "uname -m && cat /etc/os-release && docker --version && docker compose version"
|
|
```
|
|
|
|
### 预期输出示例:
|
|
|
|
**x86_64 架构 (最常见)**:
|
|
```
|
|
x86_64
|
|
NAME="CentOS Linux"
|
|
VERSION="7 (Core)"
|
|
Docker version 24.0.7
|
|
Docker Compose version v2.24.0
|
|
```
|
|
|
|
**ARM64 架构 (树莓派、ARM服务器)**:
|
|
```
|
|
aarch64
|
|
NAME="Ubuntu"
|
|
VERSION="22.04.3 LTS (Jammy Jellyfish)"
|
|
Docker version 24.0.7
|
|
Docker Compose version v2.24.0
|
|
```
|
|
|
|
## ✅ 部署方式选择
|
|
|
|
### 方式 A: 在线部署 (服务器网络良好)
|
|
|
|
**适用场景**:
|
|
- 服务器可以访问 Docker Hub
|
|
- 网络带宽充足
|
|
- 快速测试部署
|
|
|
|
**步骤**:
|
|
```bash
|
|
cd deploy
|
|
./scripts/deploy.sh
|
|
```
|
|
|
|
### 方式 B: 离线部署 (推荐生产环境) ⭐
|
|
|
|
**适用场景**:
|
|
- 服务器网络受限
|
|
- 需要离线部署
|
|
- 多服务器部署
|
|
- 网络速度慢
|
|
|
|
**步骤**:
|
|
|
|
#### 1. 本地打包镜像
|
|
```bash
|
|
cd deploy
|
|
./scripts/save-images.sh
|
|
```
|
|
|
|
这会创建 `images-archive/` 目录,包含:
|
|
- `xlcp-docker-images.tar.gz` (约 2-3GB)
|
|
- `upload.sh` (自动上传脚本)
|
|
- `README.md` (详细说明)
|
|
|
|
#### 2. 上传镜像到服务器
|
|
|
|
**方式 2.1: 使用自动脚本** (最简单)
|
|
```bash
|
|
cd images-archive
|
|
./upload.sh
|
|
```
|
|
|
|
**方式 2.2: 手动上传**
|
|
```bash
|
|
cd images-archive
|
|
|
|
# 使用 scp
|
|
scp xlcp-docker-images.tar.gz root@192.168.10.150:/projects/data/xlcp/
|
|
|
|
# 或使用 rsync
|
|
rsync -avz --progress xlcp-docker-images.tar.gz root@192.168.10.150:/projects/data/xlcp/
|
|
```
|
|
|
|
#### 3. 在服务器加载镜像
|
|
```bash
|
|
# SSH 到服务器
|
|
ssh root@192.168.10.150
|
|
|
|
# 进入目录
|
|
cd /projects/data/xlcp
|
|
|
|
# 加载镜像
|
|
docker load -i xlcp-docker-images.tar.gz
|
|
|
|
# 验证镜像
|
|
docker images | grep -E 'mysql|redis|nginx'
|
|
```
|
|
|
|
#### 4. 部署服务
|
|
```bash
|
|
# 确保部署文件已上传
|
|
cd /projects/data/xlcp
|
|
|
|
# 启动服务
|
|
docker compose up -d
|
|
|
|
# 查看状态
|
|
docker compose ps
|
|
```
|
|
|
|
## 📋 镜像兼容性说明
|
|
|
|
### ✅ 全平台支持
|
|
|
|
以下镜像在 **x86_64** 和 **ARM64** 上都支持:
|
|
|
|
| 镜像 | x86_64 | ARM64 | 说明 |
|
|
|------|--------|-------|------|
|
|
| mysql:8.0 | ✅ | ✅ | 官方支持双架构 |
|
|
| redis:7-alpine | ✅ | ✅ | 官方支持双架构 |
|
|
| nginx:1.25-alpine | ✅ | ✅ | 官方支持双架构 |
|
|
| node:20-alpine | ✅ | ✅ | 官方支持双架构 |
|
|
|
|
### ⚠️ 构建镜像
|
|
|
|
以下镜像仅在本地构建时使用,不会影响部署:
|
|
|
|
| 镜像 | 用途 | x86_64 | ARM64 |
|
|
|------|------|--------|-------|
|
|
| maven:3.9-eclipse-temurin-21 | 后端编译 | ✅ | ✅ |
|
|
| eclipse-temurin:21-jre-alpine | 后端运行 | ✅ | ✅ |
|
|
|
|
### 🔄 架构不兼容怎么办?
|
|
|
|
如果远程服务器架构与本地不同,有以下解决方案:
|
|
|
|
#### 方案 1: 在远程服务器直接构建 (推荐)
|
|
|
|
```bash
|
|
# 上传源代码到服务器
|
|
rsync -avz --exclude node_modules --exclude target \
|
|
../ root@192.168.10.150:/projects/data/xlcp/
|
|
|
|
# SSH 到服务器
|
|
ssh root@192.168.10.150
|
|
|
|
# 进入项目目录
|
|
cd /projects/data/xlcp
|
|
|
|
# 构建镜像
|
|
cd deploy
|
|
docker compose build
|
|
```
|
|
|
|
#### 方案 2: 使用 buildx 构建多架构镜像
|
|
|
|
```bash
|
|
# 启用 buildx
|
|
docker buildx create --name multiarch --use
|
|
|
|
# 构建并导出多架构镜像
|
|
docker buildx build --platform linux/amd64,linux/arm64 \
|
|
-t xlcp-backend \
|
|
--load \
|
|
-f docker/backend/Dockerfile \
|
|
../backend
|
|
```
|
|
|
|
#### 方案 3: 使用交叉编译 (高级)
|
|
|
|
需要配置 QEMU 等工具,比较复杂,不推荐。
|
|
|
|
## 🎯 快速决策树
|
|
|
|
```
|
|
检查服务器网络
|
|
|
|
|
├─ 可以访问 Docker Hub
|
|
| └─ 使用方式 A (在线部署)
|
|
|
|
|
└─ 无法访问或速度慢
|
|
|
|
|
├─ 架构相同 (都是 x86_64 或都是 ARM64)
|
|
| └─ 使用方式 B (离线部署)
|
|
|
|
|
└─ 架构不同
|
|
|
|
|
├─ 服务器性能好
|
|
| └─ 方案 1 (远程构建)
|
|
|
|
|
└─ 服务器性能差
|
|
└─ 找一台相同架构的机器做离线包
|
|
```
|
|
|
|
## 📝 实际操作示例
|
|
|
|
### 示例 1: 本地 Mac (ARM64) -> 远程 Linux (x86_64)
|
|
|
|
```bash
|
|
# 检查本地架构
|
|
uname -m
|
|
# 输出: arm64 (Apple Silicon)
|
|
|
|
# 检查远程架构
|
|
ssh root@192.168.10.150 "uname -m"
|
|
# 输出: x86_64
|
|
|
|
# 由于架构不同,选择在远程服务器构建
|
|
rsync -avz --exclude node_modules --exclude target \
|
|
/path/to/xlcp/ root@192.168.10.150:/projects/data/xlcp/
|
|
|
|
ssh root@192.168.10.150 'cd /projects/data/xlcp/deploy && docker compose up -d --build'
|
|
```
|
|
|
|
### 示例 2: 本地 Mac (x86_64) -> 远程 Linux (x86_64)
|
|
|
|
```bash
|
|
# 架构相同,可以使用离线部署
|
|
cd /path/to/xlcp/deploy
|
|
./scripts/save-images.sh
|
|
|
|
cd images-archive
|
|
./upload.sh
|
|
```
|
|
|
|
## 🆘 常见问题
|
|
|
|
### Q1: 如何快速查看服务器架构?
|
|
|
|
```bash
|
|
ssh root@192.168.10.150 "uname -m"
|
|
```
|
|
|
|
输出:
|
|
- `x86_64` = Intel/AMD 64位
|
|
- `aarch64` = ARM 64位
|
|
- `armv7l` = ARM 32位
|
|
|
|
### Q2: 镜像很大,上传需要多久?
|
|
|
|
取决于网络速度:
|
|
- 100Mbps: 约 3-5 分钟
|
|
- 10Mbps: 约 30-50 分钟
|
|
- 1Mbps: 约 5-8 小时
|
|
|
|
建议使用 rsync,支持断点续传。
|
|
|
|
### Q3: 上传中断了怎么办?
|
|
|
|
使用 rsync 的断点续传功能:
|
|
```bash
|
|
rsync -avz --partial --progress \
|
|
xlcp-docker-images.tar.gz root@192.168.10.150:/projects/data/xlcp/
|
|
```
|
|
|
|
### Q4: 服务器没有 Docker 怎么办?
|
|
|
|
先安装 Docker:
|
|
```bash
|
|
ssh root@192.168.10.150
|
|
|
|
# CentOS/RHEL
|
|
curl -fsSL https://get.docker.com | sh
|
|
systemctl start docker
|
|
systemctl enable docker
|
|
|
|
# Ubuntu/Debian
|
|
curl -fsSL https://get.docker.com | sh
|
|
systemctl start docker
|
|
systemctl enable docker
|
|
```
|
|
|
|
## ✅ 推荐的最佳实践
|
|
|
|
1. **开发环境**: 使用在线部署,快速迭代
|
|
2. **测试环境**: 使用离线部署,模拟生产
|
|
3. **生产环境**:
|
|
- 准备离线镜像包
|
|
- 多次测试部署流程
|
|
- 准备回滚方案
|
|
4. **多环境部署**: 建立镜像仓库 (Harbor/Registry)
|
|
|
|
## 📞 下一步
|
|
|
|
完成架构检查后,选择对应的部署方式:
|
|
|
|
- **在线部署**: 直接运行 `./scripts/deploy.sh`
|
|
- **离线部署**: 先运行 `./scripts/save-images.sh`
|
|
- **远程构建**: 先上传代码,再远程构建
|
|
|
|
需要帮助? 查看各脚本的帮助信息:
|
|
```bash
|
|
./scripts/save-images.sh --help
|
|
./scripts/deploy.sh --help
|
|
```
|