🔧 Fix Docker network issues for China users

## 修复

### Docker Compose
- 移除过时的 version 字段警告
- 优化配置以支持最新版本

### 网络优化
- 添加 Docker 镜像加速器配置指南
- 创建自动化配置脚本
- 提供国内优化版启动脚本

## 新增文件

- DOCKER_MIRROR_SETUP.md: 详细的镜像加速配置教程
- setup_docker_mirror.bat: 交互式配置指南
- start_windows_china.bat: 国内网络优化版启动脚本

## 改进

- 解决 Docker Hub 访问慢/失败问题
- 提供多个国内镜像源配置
- 自动检测和提示配置镜像加速

🚀 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-01 12:51:36 +08:00
parent 1b3dd929fe
commit 39f7091e1f
4 changed files with 387 additions and 2 deletions

199
DOCKER_MIRROR_SETUP.md Normal file
View File

@@ -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
```
---
祝你成功!🎉

View File

@@ -1,5 +1,3 @@
version: '3.8'
services: services:
postgres: postgres:
image: postgres:15-alpine image: postgres:15-alpine

56
setup_docker_mirror.bat Normal file
View File

@@ -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

132
start_windows_china.bat Normal file
View File

@@ -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