2.6 KiB
2.6 KiB
Docker部署
环境要求
| 组件 | 版本 |
|---|---|
| Docker | 24+ |
| Docker Compose | 2.0+ |
快速部署
1. 克隆项目
git clone http://8.153.107.96/fischer/geo.git
cd geo
2. 配置环境变量
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启动。
# 开发环境
docker-compose up -d
# 生产环境
docker-compose -f docker-compose.prod.yml up -d
4. 验证服务
# 检查容器状态
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挂载确保容器重建后数据不丢失:
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 |
数据库备份 |
健康检查
# 前端健康检查
curl http://localhost:3000/health
# 后端健康检查
curl http://localhost:8000/health
# 数据库健康检查
docker-compose exec db pg_isready
停止服务
# 停止服务(保留数据)
docker-compose stop
# 停止并删除容器
docker-compose down
# 停止并删除数据卷(危险!)
docker-compose down -v
生产环境优化
资源限制
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
日志管理
services:
backend:
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "3"
定期备份
# 备份数据库
docker-compose exec -T db pg_dump -U postgres geo > backup.sql
# 恢复数据库
cat backup.sql | docker-compose exec -T db psql -U postgres geo