104 lines
2.4 KiB
Markdown
104 lines
2.4 KiB
Markdown
# Docker 部署文件
|
||
|
||
这个目录包含了NavSphere项目的Docker部署相关文件。
|
||
|
||
## 文件说明
|
||
|
||
### Dockerfile
|
||
多阶段构建的Docker镜像配置文件,包含:
|
||
- **deps阶段**: 安装项目依赖
|
||
- **builder阶段**: 构建Next.js应用
|
||
- **runner阶段**: 运行时环境,优化镜像大小
|
||
|
||
### docker-compose.yml
|
||
开发环境的Docker Compose配置:
|
||
- 端口映射: 3000:3000
|
||
- 环境变量通过 `.env.local` 文件加载
|
||
- 包含健康检查配置
|
||
|
||
### docker-compose.prod.yml
|
||
生产环境的Docker Compose配置:
|
||
- 端口映射: 80:3000 (生产环境通常使用80端口)
|
||
- 资源限制: 内存限制512M,预留256M
|
||
- 日志轮转配置
|
||
- 自动重启策略
|
||
|
||
### .dockerignore
|
||
Docker构建时忽略的文件和目录:
|
||
- node_modules
|
||
- .git
|
||
- 开发环境文件
|
||
- 构建产物等
|
||
|
||
## 使用方法
|
||
|
||
### 快速部署
|
||
```bash
|
||
# 在项目根目录执行
|
||
./scripts/docker-deploy.sh
|
||
```
|
||
|
||
### 手动部署
|
||
|
||
1. **构建镜像**
|
||
```bash
|
||
docker build -f docker/Dockerfile -t navsphere:latest .
|
||
```
|
||
|
||
2. **开发环境**
|
||
```bash
|
||
docker-compose -f docker/docker-compose.yml up -d
|
||
```
|
||
|
||
3. **生产环境**
|
||
```bash
|
||
docker-compose -f docker/docker-compose.prod.yml up -d
|
||
```
|
||
|
||
### 管理命令
|
||
|
||
```bash
|
||
# 查看容器状态
|
||
docker-compose -f docker/docker-compose.yml ps
|
||
|
||
# 查看日志
|
||
docker-compose -f docker/docker-compose.yml logs -f
|
||
|
||
# 停止服务
|
||
docker-compose -f docker/docker-compose.yml down
|
||
|
||
# 重启服务
|
||
docker-compose -f docker/docker-compose.yml restart
|
||
```
|
||
|
||
## 环境要求
|
||
|
||
- Docker 20.0+
|
||
- Docker Compose 2.0+
|
||
- 至少512MB可用内存
|
||
|
||
## 注意事项
|
||
|
||
1. **环境变量**: 确保项目根目录存在 `.env.local` 文件
|
||
2. **端口冲突**: 确保3000端口(开发)或80端口(生产)未被占用
|
||
3. **健康检查**: 服务启动后会自动进行健康检查,确保服务正常运行
|
||
4. **数据持久化**: 当前配置不包含数据卷,重启容器不会丢失数据(因为数据存储在GitHub)
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **构建失败**
|
||
- 检查Docker版本
|
||
- 确保网络连接正常
|
||
- 查看构建日志: `docker build -f docker/Dockerfile -t navsphere:latest . --no-cache`
|
||
|
||
2. **容器启动失败**
|
||
- 检查环境变量配置
|
||
- 查看容器日志: `docker-compose -f docker/docker-compose.yml logs`
|
||
- 检查端口是否被占用
|
||
|
||
3. **健康检查失败**
|
||
- 等待更长时间让服务完全启动
|
||
- 检查 `/api/health` 端点是否正常
|
||
- 查看应用日志排查问题 |