265 lines
7.1 KiB
Markdown
265 lines
7.1 KiB
Markdown
# 宏量点云处理软件 - 内网Docker部署指南
|
||
|
||
本文档详细说明如何在内网服务器上使用Docker部署宏量点云处理软件。
|
||
|
||
## 系统要求
|
||
|
||
### 硬件要求
|
||
|
||
| 配置项 | 最低要求 | 推荐配置 |
|
||
|--------|----------|----------|
|
||
| CPU | 4核 | 8核+ |
|
||
| 内存 | 8GB | 16GB+ |
|
||
| 存储 | 100GB SSD | 500GB+ SSD |
|
||
| 网络 | 100Mbps | 1Gbps |
|
||
|
||
### 软件要求
|
||
|
||
- 操作系统: Linux (Ubuntu 20.04+, CentOS 7+, Debian 10+)
|
||
- Docker: 20.10+
|
||
- Docker Compose: 2.0+
|
||
|
||
## 快速开始
|
||
|
||
### 1. 安装Docker和Docker Compose
|
||
|
||
```bash
|
||
# Ubuntu/Debian
|
||
curl -fsSL https://get.docker.com | sh
|
||
sudo usermod -aG docker $USER
|
||
|
||
# 安装Docker Compose
|
||
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
sudo chmod +x /usr/local/bin/docker-compose
|
||
|
||
# 重新登录以应用用户组更改
|
||
```
|
||
|
||
### 2. 获取项目代码
|
||
|
||
```bash
|
||
# 从GitHub克隆 (如果已导出到GitHub)
|
||
git clone https://github.com/your-org/massive-point-cloud.git
|
||
cd massive-point-cloud
|
||
|
||
# 或者直接上传项目文件到服务器
|
||
```
|
||
|
||
### 3. 配置环境变量
|
||
|
||
```bash
|
||
# 创建环境变量文件
|
||
cat > .env << 'EOF'
|
||
# 安全配置 - 请修改为随机值
|
||
JWT_SECRET=$(openssl rand -base64 32)
|
||
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16)
|
||
|
||
# MinIO配置
|
||
MINIO_ROOT_USER=minioadmin
|
||
MINIO_ROOT_PASSWORD=$(openssl rand -base64 16)
|
||
|
||
# 应用配置
|
||
VITE_APP_TITLE=宏量点云处理软件
|
||
EOF
|
||
|
||
# 或者手动编辑
|
||
nano .env
|
||
```
|
||
|
||
### 4. 启动服务
|
||
|
||
```bash
|
||
# 基础部署 (应用 + MySQL + MinIO)
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
```
|
||
|
||
### 5. 访问应用
|
||
|
||
- **Web应用**: http://your-server-ip:3000
|
||
- **MinIO控制台**: http://your-server-ip:9001
|
||
|
||
## 部署架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 内网服务器 │
|
||
│ ┌─────────────────────────────────────────────────────┐ │
|
||
│ │ Docker Network │ │
|
||
│ │ │ │
|
||
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
|
||
│ │ │ App │ │ MySQL │ │ MinIO │ │ │
|
||
│ │ │ :3000 │ │ :3306 │ │ :9000 / :9001 │ │ │
|
||
│ │ └────┬─────┘ └────┬─────┘ └────────┬─────────┘ │ │
|
||
│ │ │ │ │ │ │
|
||
│ │ └─────────────┴──────────────────┘ │ │
|
||
│ │ │ │ │
|
||
│ └──────────────────────┼──────────────────────────────┘ │
|
||
│ │ │
|
||
│ ┌──────────────────────┴──────────────────────────────┐ │
|
||
│ │ Nginx (可选, 生产环境) │ │
|
||
│ │ :80 / :443 │ │
|
||
│ └──────────────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 服务说明
|
||
|
||
| 服务 | 端口 | 说明 |
|
||
|------|------|------|
|
||
| app | 3000 | 主应用服务 |
|
||
| mysql | 3306 | MySQL数据库 |
|
||
| minio | 9000 | MinIO API |
|
||
| minio | 9001 | MinIO控制台 |
|
||
| nginx | 80/443 | 反向代理 (可选) |
|
||
| redis | 6379 | 缓存服务 (可选) |
|
||
|
||
## 高级配置
|
||
|
||
### 启用Nginx反向代理
|
||
|
||
```bash
|
||
# 使用production profile启动
|
||
docker-compose --profile production up -d
|
||
```
|
||
|
||
### 启用Redis缓存
|
||
|
||
```bash
|
||
# 使用with-cache profile启动
|
||
docker-compose --profile with-cache up -d
|
||
```
|
||
|
||
### 配置HTTPS
|
||
|
||
1. 将SSL证书放置到 `docker/nginx/ssl/` 目录:
|
||
- `cert.pem` - 证书文件
|
||
- `key.pem` - 私钥文件
|
||
|
||
2. 编辑 `docker/nginx/nginx.conf`,取消HTTPS服务器配置的注释
|
||
|
||
3. 重启Nginx:
|
||
```bash
|
||
docker-compose restart nginx
|
||
```
|
||
|
||
### 数据持久化
|
||
|
||
所有数据存储在Docker卷中:
|
||
|
||
| 卷名 | 用途 |
|
||
|------|------|
|
||
| pointcloud-mysql-data | MySQL数据 |
|
||
| pointcloud-minio-data | 点云文件存储 |
|
||
| pointcloud-redis-data | Redis缓存 |
|
||
| pointcloud-app-logs | 应用日志 |
|
||
|
||
备份数据:
|
||
```bash
|
||
# 备份MySQL
|
||
docker exec massive-point-cloud-mysql mysqldump -u root -p pointcloud_db > backup.sql
|
||
|
||
# 备份MinIO数据
|
||
docker run --rm -v pointcloud-minio-data:/data -v $(pwd):/backup alpine tar cvf /backup/minio-backup.tar /data
|
||
```
|
||
|
||
## 运维命令
|
||
|
||
```bash
|
||
# 查看所有服务状态
|
||
docker-compose ps
|
||
|
||
# 查看实时日志
|
||
docker-compose logs -f app
|
||
|
||
# 重启单个服务
|
||
docker-compose restart app
|
||
|
||
# 停止所有服务
|
||
docker-compose down
|
||
|
||
# 停止并删除数据卷 (危险!)
|
||
docker-compose down -v
|
||
|
||
# 更新应用
|
||
git pull
|
||
docker-compose build app
|
||
docker-compose up -d app
|
||
|
||
# 进入容器调试
|
||
docker exec -it massive-point-cloud-app sh
|
||
docker exec -it massive-point-cloud-mysql mysql -u root -p
|
||
```
|
||
|
||
## 故障排查
|
||
|
||
### 应用无法启动
|
||
|
||
```bash
|
||
# 检查日志
|
||
docker-compose logs app
|
||
|
||
# 检查数据库连接
|
||
docker exec massive-point-cloud-app curl -f http://mysql:3306 || echo "MySQL not ready"
|
||
```
|
||
|
||
### 数据库连接失败
|
||
|
||
```bash
|
||
# 检查MySQL状态
|
||
docker-compose logs mysql
|
||
|
||
# 手动测试连接
|
||
docker exec -it massive-point-cloud-mysql mysql -u pointcloud -p -e "SELECT 1"
|
||
```
|
||
|
||
### MinIO无法访问
|
||
|
||
```bash
|
||
# 检查MinIO状态
|
||
docker-compose logs minio
|
||
|
||
# 检查存储桶
|
||
docker exec massive-point-cloud-minio-init mc ls myminio/
|
||
```
|
||
|
||
## 性能优化
|
||
|
||
### MySQL优化
|
||
|
||
编辑 `docker/mysql/my.cnf`:
|
||
```ini
|
||
[mysqld]
|
||
innodb_buffer_pool_size = 2G
|
||
innodb_log_file_size = 512M
|
||
max_connections = 200
|
||
```
|
||
|
||
### 增加文件上传限制
|
||
|
||
修改 `docker/nginx/nginx.conf`:
|
||
```nginx
|
||
client_max_body_size 5G;
|
||
```
|
||
|
||
## 安全建议
|
||
|
||
1. **修改默认密码**: 务必修改 `.env` 中的所有默认密码
|
||
2. **限制端口暴露**: 生产环境只暴露80/443端口
|
||
3. **启用防火墙**: 配置iptables或firewalld
|
||
4. **定期备份**: 设置自动备份任务
|
||
5. **更新镜像**: 定期更新Docker镜像修复安全漏洞
|
||
|
||
## 联系支持
|
||
|
||
如遇到部署问题,请检查:
|
||
1. Docker和Docker Compose版本是否满足要求
|
||
2. 服务器资源是否充足
|
||
3. 端口是否被占用
|
||
4. 防火墙规则是否正确
|