|
|
||
|---|---|---|
| .. | ||
| nginx | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| deploy.sh | ||
| docker-compose.yml | ||
README.md
前端 Docker 部署
前置条件
- 服务器需安装 Node.js 18+ 和 pnpm(macOS 执行
npm install -g pnpm) - 后端已部署在同一台服务器上
首次部署
cd deploy
cp .env.example .env
vim .env # 改端口(默认 80 常被占用,建议 3100)
bash deploy.sh rebuild
日常操作
| 命令 | 作用 | 场景 |
|---|---|---|
bash deploy.sh start |
停旧容器 → 启动(不编译) | 改了 nginx 配置 |
bash deploy.sh build [分支] |
宿主机构建 dist → 编译镜像 | 代码变了,先编译 |
bash deploy.sh rebuild [分支] |
拉取分支代码 + 编译 + 启动 | 代码变了,一步到位 |
bash deploy.sh stop |
停止 | - |
bash deploy.sh logs |
查看日志 | 排查问题 |
bash deploy.sh status |
容器状态 | - |
分支参数默认
master,指定其他分支:bash deploy.sh rebuild test
构建原理
宿主机构建 dist + Docker 打包 Nginx(因 Mac Docker Desktop 内存限制,Docker 内编译会 OOM):
宿主 pnpm build → dist/
↓
Docker (nginx:alpine)
├─ nginx 配置 → /etc/nginx/conf.d/
└─ dist/ → /usr/share/nginx/html/
Nginx 代理规则
| 路径 | 转发目标 | 说明 |
|---|---|---|
/ghb-boot/* |
http://ghb-backend:8081/ghb/* |
API 代理到后端容器 |
/* |
本地静态文件 | 前端路由回退到 index.html |
前后端通过 public-services_default 外部网络互通,无需额外配置。
目录结构
deploy/
├── deploy.sh # 部署脚本(与后端命令一致)
├── .env.example # 配置模板
├── .env # 实际配置(不入 git)
├── Dockerfile # 精简镜像(nginx + dist)
├── docker-compose.yml # Docker 编排
├── nginx/
│ └── default.conf # Nginx 配置(含 API 代理)
└── README.md