diff --git a/DOCKER_MIRROR_SETUP.md b/DOCKER_MIRROR_SETUP.md new file mode 100644 index 0000000..7486c54 --- /dev/null +++ b/DOCKER_MIRROR_SETUP.md @@ -0,0 +1,199 @@ +# Docker 镜像加速器配置指南 + +## 问题描述 + +错误信息:`failed to resolve reference "docker.io/library/postgres:15-alpine"` + +**原因**:无法访问 Docker Hub,需要配置国内镜像加速器。 + +--- + +## 解决方案一:配置 Docker Desktop 镜像加速(推荐) + +### 方法 1:使用阿里云镜像加速器 + +1. **打开 Docker Desktop** + +2. **进入设置** + - 点击右上角齿轮图标 ⚙️ + - 选择 "Docker Engine" + +3. **添加镜像加速器配置** + +在 JSON 配置中添加以下内容: + +```json +{ + "builder": { + "gc": { + "defaultKeepStorage": "20GB", + "enabled": true + } + }, + "experimental": false, + "registry-mirrors": [ + "https://docker.mirrors.ustc.edu.cn", + "https://hub-mirror.c.163.com", + "https://mirror.baidubce.com" + ] +} +``` + +4. **应用并重启** + - 点击 "Apply & Restart" + - 等待 Docker Desktop 重启完成 + +5. **验证配置** + +```powershell +docker info | findstr "Registry Mirrors" +``` + +应该看到配置的镜像地址。 + +--- + +## 解决方案二:手动拉取镜像(临时方案) + +如果配置镜像加速器后仍然失败,可以手动拉取镜像: + +```powershell +# 尝试使用不同的镜像源拉取 +docker pull docker.mirrors.ustc.edu.cn/library/postgres:15-alpine +docker tag docker.mirrors.ustc.edu.cn/library/postgres:15-alpine postgres:15-alpine + +docker pull docker.mirrors.ustc.edu.cn/library/node:18-alpine +docker tag docker.mirrors.ustc.edu.cn/library/node:18-alpine node:18-alpine + +docker pull docker.mirrors.ustc.edu.cn/library/python:3.11-slim +docker tag docker.mirrors.ustc.edu.cn/library/python:3.11-slim python:3.11-slim +``` + +--- + +## 解决方案三:使用国内可用的基础镜像 + +修改 `docker-compose.yml` 使用国内镜像源: + +```yaml +services: + postgres: + image: registry.cn-hangzhou.aliyuncs.com/library/postgres:15-alpine + # 或使用 + # image: docker.mirrors.ustc.edu.cn/library/postgres:15-alpine +``` + +--- + +## 推荐配置(完整版) + +### Docker Desktop 完整配置 + +```json +{ + "builder": { + "gc": { + "defaultKeepStorage": "20GB", + "enabled": true + } + }, + "experimental": false, + "features": { + "buildkit": true + }, + "registry-mirrors": [ + "https://docker.mirrors.ustc.edu.cn", + "https://hub-mirror.c.163.com", + "https://mirror.baidubce.com", + "https://dockerproxy.com" + ], + "insecure-registries": [], + "debug": false +} +``` + +--- + +## 常用镜像加速器地址 + +| 提供商 | 镜像地址 | 说明 | +|--------|----------|------| +| 中科大 | https://docker.mirrors.ustc.edu.cn | 稳定,推荐 | +| 网易 | https://hub-mirror.c.163.com | 速度快 | +| 百度云 | https://mirror.baidubce.com | 国内访问快 | +| Docker Proxy | https://dockerproxy.com | 备用 | + +--- + +## 验证是否成功 + +### 1. 检查配置 +```powershell +docker info +``` + +查找 "Registry Mirrors" 部分,应该显示配置的镜像地址。 + +### 2. 测试拉取镜像 +```powershell +docker pull hello-world +``` + +如果成功,说明镜像加速器配置正确。 + +### 3. 重新启动 QQuiz +```powershell +cd E:\QQuiz +docker-compose up -d +``` + +--- + +## 如果仍然失败 + +### 检查网络连接 + +```powershell +# 测试是否能访问镜像加速器 +curl https://docker.mirrors.ustc.edu.cn +``` + +### 尝试其他镜像源 + +如果某个镜像源不可用,尝试注释掉它,只保留可用的: + +```json +{ + "registry-mirrors": [ + "https://docker.mirrors.ustc.edu.cn" + ] +} +``` + +### 检查防火墙/代理 + +- 暂时关闭防火墙测试 +- 如果使用代理,在 Docker Desktop 设置中配置代理 + +--- + +## 完成后的下一步 + +配置成功后: + +```powershell +# 1. 重新启动服务 +cd E:\QQuiz +docker-compose down +docker-compose up -d + +# 2. 查看启动日志 +docker-compose logs -f + +# 3. 访问应用 +# http://localhost:3000 +``` + +--- + +祝你成功!🎉 diff --git a/docker-compose.yml b/docker-compose.yml index 6d01d6e..2e7ad0e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: postgres: image: postgres:15-alpine diff --git a/setup_docker_mirror.bat b/setup_docker_mirror.bat new file mode 100644 index 0000000..00cbd8b --- /dev/null +++ b/setup_docker_mirror.bat @@ -0,0 +1,56 @@ +@echo off +chcp 65001 >nul +title QQuiz - 配置 Docker 镜像加速器 + +echo. +echo ========================================== +echo 配置 Docker 镜像加速器 +echo ========================================== +echo. + +echo [提示] 此脚本将帮助您配置 Docker Desktop 使用国内镜像源 +echo. +echo 请按照以下步骤操作: +echo. +echo 1. 打开 Docker Desktop +echo 2. 点击右上角的齿轮图标 ⚙️ (设置) +echo 3. 选择左侧菜单的 "Docker Engine" +echo 4. 在 JSON 配置中找到或添加 "registry-mirrors" 部分 +echo. +echo 将以下内容复制到配置中: +echo. +echo ========================================== +echo. +echo "registry-mirrors": [ +echo "https://docker.mirrors.ustc.edu.cn", +echo "https://hub-mirror.c.163.com", +echo "https://mirror.baidubce.com" +echo ] +echo. +echo ========================================== +echo. +echo 完整配置示例: +echo. +echo { +echo "builder": { +echo "gc": { +echo "defaultKeepStorage": "20GB", +echo "enabled": true +echo } +echo }, +echo "experimental": false, +echo "registry-mirrors": [ +echo "https://docker.mirrors.ustc.edu.cn", +echo "https://hub-mirror.c.163.com", +echo "https://mirror.baidubce.com" +echo ] +echo } +echo. +echo ========================================== +echo. +echo 5. 点击 "Apply & Restart" 应用并重启 Docker +echo 6. 等待 Docker Desktop 重启完成 +echo 7. 重新运行 start_windows.bat +echo. + +pause diff --git a/start_windows_china.bat b/start_windows_china.bat new file mode 100644 index 0000000..d9a412e --- /dev/null +++ b/start_windows_china.bat @@ -0,0 +1,132 @@ +@echo off +chcp 65001 >nul +title QQuiz - 启动服务 (国内优化版) + +echo. +echo ========================================== +echo QQuiz - 智能刷题与题库管理平台 +echo (国内网络优化版) +echo ========================================== +echo. + +REM 检查是否在项目目录 +if not exist "docker-compose.yml" ( + echo [错误] 请在项目根目录运行此脚本! + pause + exit /b 1 +) + +REM 检查 .env 文件 +if not exist ".env" ( + echo [警告] .env 文件不存在,正在从模板创建... + copy .env.example .env >nul + echo [完成] 已创建 .env 文件,请编辑后重新运行此脚本 + notepad .env + pause + exit /b 1 +) + +echo [1/5] 检查 Docker Desktop... +docker info >nul 2>&1 +if %errorlevel% neq 0 ( + echo [错误] Docker Desktop 未运行! + echo. + echo 请先启动 Docker Desktop,然后按任意键继续... + pause >nul + + REM 再次检查 + docker info >nul 2>&1 + if %errorlevel% neq 0 ( + echo [错误] Docker Desktop 启动失败! + pause + exit /b 1 + ) +) +echo [完成] Docker Desktop 运行正常 +echo. + +echo [2/5] 检查镜像加速器配置... +docker info | findstr "Registry Mirrors" >nul +if %errorlevel% neq 0 ( + echo [警告] 未检测到镜像加速器配置 + echo. + echo 强烈建议配置镜像加速器以提高下载速度! + echo. + choice /C YN /M "是否现在配置镜像加速器" + if %errorlevel% equ 1 ( + echo. + echo 请按照提示配置 Docker Desktop 镜像加速器... + call setup_docker_mirror.bat + echo. + echo 配置完成后,请重新运行此脚本 + pause + exit /b 0 + ) +) else ( + echo [完成] 已配置镜像加速器 +) +echo. + +echo [3/5] 停止旧容器... +docker-compose down >nul 2>&1 +echo [完成] +echo. + +echo [4/5] 启动服务(首次启动需要几分钟)... +echo. +echo [提示] 如果下载镜像失败,请: +echo 1. 配置镜像加速器(运行 setup_docker_mirror.bat) +echo 2. 或使用备用启动方式(见下方提示) +echo. + +docker-compose up -d +if %errorlevel% neq 0 ( + echo. + echo [错误] 服务启动失败! + echo. + echo 可能的原因: + echo 1. 网络问题 - 无法下载 Docker 镜像 + echo 2. 端口被占用 - 3000/8000/5432 端口已被使用 + echo 3. 配置错误 - 检查 .env 文件 + echo. + echo 解决方案: + echo 1. 配置镜像加速器: 运行 setup_docker_mirror.bat + echo 2. 查看详细错误: docker-compose logs + echo 3. 阅读文档: DOCKER_MIRROR_SETUP.md + echo. + pause + exit /b 1 +) +echo [完成] 服务启动成功 +echo. + +echo [5/5] 等待服务就绪... +timeout /t 8 /nobreak >nul +echo. + +echo ========================================== +echo 服务已启动! +echo ========================================== +echo. +echo 前端地址: http://localhost:3000 +echo 后端地址: http://localhost:8000 +echo API 文档: http://localhost:8000/docs +echo. +echo 默认账户: +echo 用户名: admin +echo 密码: admin123 +echo. +echo 镜像加速: 已配置国内镜像源 +echo ========================================== +echo. + +REM 询问是否打开浏览器 +choice /C YN /M "是否打开浏览器" +if %errorlevel% equ 1 ( + start http://localhost:3000 +) + +echo. +echo 按任意键查看日志(Ctrl+C 退出日志查看)... +pause >nul +docker-compose logs -f