# CentOS 7 + Docker 部署说明

## 1. 准备代码

在服务器上任选一种方式拿到项目文件：

**方式 A：Git**

```bash
cd /opt
sudo git clone <你的仓库地址> resume-app
cd resume-app
```

**方式 B：本机打包上传**

在本机项目根目录打包（不要打进 `node_modules`、`.env`）：

```bash
tar czvf resume-app.tar.gz --exclude=node_modules --exclude=.git .
```

上传到服务器后：

```bash
mkdir -p /opt/resume-app && cd /opt/resume-app
tar xzvf ~/resume-app.tar.gz
```

## 2. 环境变量

```bash
cd /opt/resume-app
cp .env.example .env
vi .env
```

按说明填写 `DEEPSEEK_API_KEY`、`MYSQL_*` 等。**不要将 `.env` 提交到 Git。**

## 3. 构建并启动（Docker Compose）

CentOS 7 上若安装的是旧版 `docker-compose`，命令可能是 `docker-compose`（带连字符）：

```bash
cd /opt/resume-app
docker compose build
docker compose up -d
```

若提示 `docker compose` 不存在，可试：

```bash
docker-compose build
docker-compose up -d
```

查看日志：

```bash
docker compose logs -f
# 或
docker-compose logs -f
```

浏览器访问：`http://服务器IP:3000`。

## 4. 防火墙（CentOS 7）

```bash
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
```

云厂商安全组里也要放行 **3000**（或你改的端口）。

## 5. 修改对外端口（可选）

编辑 `docker-compose.yml` 中端口映射，例如改为宿主机 8080：

```yaml
ports:
  - "8080:3000"
```

容器内仍监听 `PORT=3000`，映射左边为宿主机端口。

## 6. 更新版本

```bash
cd /opt/resume-app
git pull   # 若使用 Git
docker compose build --no-cache
docker compose up -d
```

## 7. 生产环境建议

- 前面加 **Nginx** 反向代理，配置 HTTPS（Let’s Encrypt 等）。
- MySQL 若在同一内网，优先用内网地址，并限制来源 IP。
- 定期备份数据库；`.env` 权限：`chmod 600 .env`。

## 8. 常见问题

**镜像构建失败（canvas 等原生模块）**  
在 `Dockerfile` 中取消注释安装 `python3 make g++` 的那一行后重新 `build`。

**容器内连不上 MySQL**  
确认 `MYSQL_HOST` 对容器可达：若 MySQL 在宿主机上，不要用 `127.0.0.1`，应使用宿主机在 Docker 网桥上的地址，或将 MySQL 也容器化并用同一 network；最简单是将 MySQL 放在另一台机器或云 RDS，填公网/内网 IP。

**CentOS 7 已 EOL**  
长期建议升级到 Rocky Linux 8/9 或 AlmaLinux 8/9，再装 Docker。
