112 lines
2.4 KiB
Markdown
112 lines
2.4 KiB
Markdown
# 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。
|