146 lines
2.6 KiB
Markdown
146 lines
2.6 KiB
Markdown
# Docker部署
|
||
|
||
## 环境要求
|
||
|
||
| 组件 | 版本 |
|
||
|------|------|
|
||
| Docker | 24+ |
|
||
| Docker Compose | 2.0+ |
|
||
|
||
## 快速部署
|
||
|
||
### 1. 克隆项目
|
||
|
||
```bash
|
||
git clone http://8.153.107.96/fischer/geo.git
|
||
cd geo
|
||
```
|
||
|
||
### 2. 配置环境变量
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
# 编辑.env配置必要参数
|
||
```
|
||
|
||
> **说明**:Docker Compose 默认读取项目根目录下的 `.env` 文件加载环境变量。所有配置项均可通过 `.env` 文件统一管理,无需在 `docker-compose.yml` 中硬编码。
|
||
|
||
### 3. 启动服务
|
||
|
||
> **注意**:开发模式使用 `uvicorn --reload` 启动,支持热重载;生产环境必须移除 `--reload` 参数,使用 `uvicorn app.main:app --host 0.0.0.0 --port 8000` 启动。
|
||
|
||
```bash
|
||
# 开发环境
|
||
docker-compose up -d
|
||
|
||
# 生产环境
|
||
docker-compose -f docker-compose.prod.yml up -d
|
||
```
|
||
|
||
### 4. 验证服务
|
||
|
||
```bash
|
||
# 检查容器状态
|
||
docker-compose ps
|
||
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
```
|
||
|
||
## 容器说明
|
||
|
||
| 容器名 | 说明 | 端口 |
|
||
|--------|------|------|
|
||
| geo-frontend | Next.js前端 | 3000 |
|
||
| geo-backend | FastAPI后端 | 8000 |
|
||
| geo-db | PostgreSQL数据库 | 5432 |
|
||
| geo-redis | Redis缓存 | 6379 |
|
||
| geo-worker | Celery worker | - |
|
||
| geo-nginx | 反向代理 | 80/443 |
|
||
|
||
## 数据持久化
|
||
|
||
通过Volume挂载确保容器重建后数据不丢失:
|
||
|
||
```yaml
|
||
volumes:
|
||
postgres_data:/var/lib/postgresql/data
|
||
redis_data:/data
|
||
./uploads:/app/uploads
|
||
./logs:/app/logs
|
||
./backups:/app/backups
|
||
```
|
||
|
||
| 挂载路径 | 说明 |
|
||
|----------|------|
|
||
| `postgres_data` | PostgreSQL数据目录 |
|
||
| `redis_data` | Redis持久化数据 |
|
||
| `./uploads` | 用户上传文件 |
|
||
| `./logs` | 应用日志 |
|
||
| `./backups` | 数据库备份 |
|
||
|
||
## 健康检查
|
||
|
||
```bash
|
||
# 前端健康检查
|
||
curl http://localhost:3000/health
|
||
|
||
# 后端健康检查
|
||
curl http://localhost:8000/health
|
||
|
||
# 数据库健康检查
|
||
docker-compose exec db pg_isready
|
||
```
|
||
|
||
## 停止服务
|
||
|
||
```bash
|
||
# 停止服务(保留数据)
|
||
docker-compose stop
|
||
|
||
# 停止并删除容器
|
||
docker-compose down
|
||
|
||
# 停止并删除数据卷(危险!)
|
||
docker-compose down -v
|
||
```
|
||
|
||
## 生产环境优化
|
||
|
||
### 资源限制
|
||
|
||
```yaml
|
||
services:
|
||
backend:
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '2'
|
||
memory: 2G
|
||
reservations:
|
||
cpus: '0.5'
|
||
memory: 512M
|
||
```
|
||
|
||
### 日志管理
|
||
|
||
```yaml
|
||
services:
|
||
backend:
|
||
logging:
|
||
driver: "json-file"
|
||
options:
|
||
max-size: "100m"
|
||
max-file: "3"
|
||
```
|
||
|
||
### 定期备份
|
||
|
||
```bash
|
||
# 备份数据库
|
||
docker-compose exec -T db pg_dump -U postgres geo > backup.sql
|
||
|
||
# 恢复数据库
|
||
cat backup.sql | docker-compose exec -T db psql -U postgres geo
|
||
```
|