Appearance
01_Docker 快速启动手册
适用于 Windows (Docker Desktop)、macOS、Linux
1. 安装前置
- 安装 Docker Desktop (含 Compose V2)
- Windows ➜ 启用 WSL 2 或 Hyper-V,确保 CPU 虚拟化已开启
- 终端验证
bash
docker version
docker compose version2. 准备环境变量 .env
项目根目录创建 .env:
bash
DATABASE_URL=postgresql+asyncpg://moduoduo:moduoduo@postgres:5432/moduoduo
SECRET_KEY=ReplaceThisWithRandom
ACCESS_TOKEN_EXPIRE_MINUTES=1440
ALLOW_ORIGINS=*
# 可选:启用 Redis 缓存(读多写少:课程详情/手册快照/元数据)
REDIS_URL=redis://redis:6379/03. 首次启动 / 构建
bash
docker compose up --build -d # -d 后台运行容器一览:
| 服务 | 端口 | 描述 |
|---|---|---|
| postgres | 55432 | PostgreSQL 17 |
| redis | 6379 | Redis 7 |
| backend | 8000 | FastAPI 应用 |
| pgadmin | 5050 | pgAdmin 4 Web UI |
默认账号 & 连接信息
| 组件 | 用途 | Host/URL | 端口 | 用户名 | 密码 | 其他 |
|---|---|---|---|---|---|---|
| PostgreSQL | 应用 / 本地客户端连接 | localhost | 55432 | moduoduo | moduoduo | 默认数据库 moduoduo |
| PostgreSQL | 服务间连接(容器内部) | <容器 IP> | 5432 | moduoduo | moduoduo | 先执行 docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' moduoduo-edu-mvp-postgres-1 (云服务器里是moduoduo-edu-backend-postgres-1) 获取 IP,再作为 Host 填写 |
| pgAdmin 4 | Web 管理界面登录 | http://localhost:5050 | 80 | admin@example.com | moduoduo | 首次启动自动创建账号 |
4. 初始化数据库
bash
docker compose exec backend alembic upgrade head5. 开发热更新
bash
# 停掉后台 backend
docker compose stop backend
# 前台热加载
docker compose run --service-ports backend \
uvicorn app.main:app --reload --host 0.0.0.06. 常见命令
| 场景 | 命令 |
|---|---|
| 查看日志 | docker compose logs -f backend |
| 重新构建镜像 | docker compose build backend |
| 重启/启动已存在容器(Docker Desktop 重启后) | docker compose up -d |
| 停止并删除 | docker compose down -v |
| 清理悬挂镜像/层 | docker builder prune -af |
7. 常见错误速查
| 报错 | 解决方案 |
|---|---|
.env not found | 在根目录创建 .env 文件 |
version is obsolete | 删除 docker-compose.yml 顶部 version: 字段,或忽略 |
No matching distribution | 更新 requirements.txt 中问题包版本 |
SettingsError ALLOW_ORIGINS | 确保 .env 中 ALLOW_ORIGINS 正确,如 * 或多域名逗号分隔 |
open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified | Windows 上的 Docker 引擎未启动。解决:启动 Docker Desktop 并等待状态为 Running;docker version 应显示 Server 信息;在 Docker Desktop 设置中启用 WSL2 引擎(Use the WSL 2 based engine),必要时开启 Windows 功能 WSL/Virtual Machine Platform 并重启。 |
完成后访问:
- 健康检查 http://localhost:8000/healthz
- Swagger UI http://localhost:8000/docs
- pgAdmin 4 http://localhost:5050