# 基础设施部署文档

## 概述

本项目使用 Docker Compose 管理所有基础设施服务（MySQL、Redis、Nacos、RocketMQ、Seata 等）。

**重要：国内环境无法直接从 Docker Hub 拉取镜像，需要配置国内镜像加速器。**

---

## 前提条件

### 1. 安装 Docker 和 Docker Compose

```bash
# 安装 Docker
curl -fsSL https://get.docker.com | bash

# 安装 Docker Compose
apt-get install -y docker-compose

# 验证安装
docker --version
docker-compose --version
```

### 2. 配置国内 Docker 镜像加速

创建或编辑 `/etc/docker/daemon.json`：

```json
{
  "registry-mirrors": [
    "https://dockerproxy.cn",
    "https://docker.rainbond.cc",
    "https://docker.m.daocloud.io",
    "https://docker.wanpeng.top"
  ],
  "storage-driver": "overlay2"
}
```

然后重启 Docker：
```bash
systemctl restart docker
```

---

## 基础设施服务列表

| 服务 | 镜像 | 端口 | 说明 |
|------|------|------|------|
| MySQL | mysql:8.0 | 3307 | 数据库 |
| Redis | redis:7-alpine | 6379 | 缓存 |
| Nacos | nacos/nacos-server:v2.2.3 | 8848, 9848, 9849 | 服务注册与配置中心 |
| RocketMQ | apache/rocketmq:5.1.4 | 9876, 10909, 10911 | 消息队列 |
| Seata | seataio/seata-server:1.7.1 | 8091, 7091 | 分布式事务 |

---

## 启动基础设施

### 方法一：使用 Docker Compose（推荐）

```bash
# 进入项目目录
cd /path/to/erp-java-backend

# 启动所有基础设施服务（不包括业务服务）
docker-compose up -d mysql redis nacos rocketmq rocketmq-broker rocketmq-console seata

# 启动所有基础设施（完整）
docker-compose up -d
```

### 方法二：逐个启动

```bash
# 1. 启动 MySQL
docker-compose up -d mysql

# 2. 启动 Redis
docker-compose up -d redis

# 3. 等待 MySQL 健康检查通过后，启动 Nacos
docker-compose up -d nacos

# 4. 启动 RocketMQ
docker-compose up -d rocketmq rocketmq-broker
```

### 验证服务状态

```bash
# 查看运行中的容器
docker-compose ps

# 查看容器日志
docker-compose logs -f nacos

# 健康检查
curl http://localhost:8848/nacos/
```

---

## Nacos 下载地址（国内镜像）

如果需要手动下载 Nacos Server，以下是国内可用的镜像源：

### 华为云镜像（推荐）
```
https://repo.huaweicloud.com/alibaba/nacos/2.2.3/nacos-server-2.2.3.tar.gz
```

### 中科大镜像
```
https://mirrors.ustc.edu.cn/github/alibaba/nacos/v2.2.3/nacos-server-2.2.3.tar.gz
```

### 腾讯云镜像
```
https://mirrors.cloud.tencent.com/github/alibaba/nacos/2.2.3/nacos-server-2.2.3.tar.gz
```

### Maven 中央仓库
```
https://repo.maven.apache.org/maven2/com/alibaba/nacos/nacos-server/2.2.3/nacos-server-2.2.3.tar.gz
```

### GitHub 直链（需要代理）
```
https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
```

### Nacos Docker 镜像

```bash
# Docker Hub 镜像（需要配置加速器）
docker pull nacos/nacos-server:v2.2.3

# 或者使用国内镜像
docker pull dockerpull.cn/nacos/nacos-server:v2.2.3
```

---

## 启动后配置

### Nacos 控制台

1. 访问 http://localhost:8848/nacos
2. 默认用户名：`nacos`
3. 默认密码：`nacos`

### 创建配置

Nacos 启动后会自动创建 `nacos_config` 数据库，但可能需要手动执行初始化脚本：

```bash
# 查看 Nacos 初始化 SQL
ls /root/.openclaw/workspace/erp-java-backend/nacos/init/
```

---

## 常见问题

### 1. Docker Hub 无法访问

**问题**：`Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp`

**解决**：
1. 配置国内 Docker 镜像加速器（见上文）
2. 或使用代理

### 2. Nacos 启动失败

**检查**：
```bash
# 查看 Nacos 日志
docker-compose logs nacos

# 检查 MySQL 是否就绪
docker-compose ps mysql
```

### 3. 服务无法连接到 Nacos

**检查**：
1. Nacos 是否已启动并通过健康检查
2. 网络是否正确配置
3. 防火墙是否开放 8848 端口

### 4. MySQL 连接失败

**检查**：
```bash
# 查看 MySQL 日志
docker-compose logs mysql

# 测试连接
mysql -h localhost -P 3307 -uroot -proot123456
```

---

## 停止服务

```bash
# 停止所有服务（保留数据）
docker-compose stop

# 停止并删除容器（保留数据卷）
docker-compose down

# 停止并删除所有数据（危险！）
docker-compose down -v
```

---

## 端口占用检查

如果端口被占用：

```bash
# Linux
netstat -tlnp | grep 8848
lsof -i :8848

# 或使用 ss
ss -tlnp | grep 8848
```

---

## 资源要求

| 服务 | 最低内存 | 推荐内存 |
|------|---------|---------|
| MySQL | 512MB | 1GB |
| Redis | 128MB | 256MB |
| Nacos | 512MB | 1GB |
| RocketMQ | 1GB | 2GB |
| Seata | 256MB | 512MB |

**总计：约 2.5GB - 4GB**
