geo/docs/05-部署运维/docker.md

2.6 KiB
Raw Permalink Blame History

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