# Docker 国内源构建指南

## 📋 概述

`Dockerfile国内源版` 是专为中国大陆用户优化的Docker构建文件，所有依赖都从国内镜像源下载，大幅提升构建速度。

## 🚀 快速构建

```bash
# Windows PowerShell
docker build -f "Dockerfile国内源版" -t agentsstock1:latest .

# Linux/macOS
docker build -f Dockerfile国内源版 -t agentsstock1:latest .
```

## 🌐 国内镜像源配置

### 1. 基础镜像
- **源**: 华为云Docker镜像仓库
- **地址**: `swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.12-slim`
- **优势**: 华为云CDN加速，下载速度快

### 2. Debian系统包
- **源**: 阿里云Debian镜像
- **地址**: `mirrors.aliyun.com/debian/`
- **包含**: 
  - `bookworm main` - 主仓库
  - `bookworm-updates` - 更新仓库
  - `bookworm-security` - 安全更新
- **优势**: 国内访问速度快，稳定可靠

### 3. Node.js
- **源**: 淘宝npm镜像（二进制包）
- **地址**: `registry.npmmirror.com/-/binary/node/`
- **版本**: Node.js 18.20.4 LTS（长期支持版）
- **安装方式**: 直接下载预编译二进制包
- **优势**: 
  - 淘宝CDN加速，速度极快
  - 无需配置apt源，更稳定可靠
  - 支持多架构（x64/arm64）
  - 固定版本，可预测性强

### 4. npm包管理器
- **源**: 淘宝npm镜像（npmmirror）
- **地址**: `registry.npmmirror.com`
- **优势**: 
  - 同步频率高（10分钟）
  - CDN加速
  - 完整同步官方npm仓库

### 5. Python pip包
- **源**: 清华大学PyPI镜像
- **地址**: `pypi.tuna.tsinghua.edu.cn/simple/`
- **优势**: 
  - 教育网镜像，速度快
  - 每5分钟同步一次官方PyPI
  - 稳定可靠

## ⚡ 性能对比

| 项目 | 官方源 | 国内源 | 提升 |
|------|--------|--------|------|
| 基础镜像下载 | ~5-10分钟 | ~30-60秒 | **10倍** |
| Debian包安装 | ~3-5分钟 | ~30-60秒 | **5倍** |
| Node.js安装 | ~2-5分钟 | ~30秒 | **6倍** |
| Python依赖 | ~10-15分钟 | ~2-3分钟 | **5倍** |
| **总构建时间** | **20-35分钟** | **4-6分钟** | **🚀 6倍+** |

## 🔧 技术细节

### Node.js安装流程

采用**二进制包直接安装**方案，避免apt源配置问题：

```dockerfile
# 1. 设置版本和检测系统架构
NODE_VERSION=18.20.4
ARCH=$(dpkg --print-architecture)
if [ "$ARCH" = "amd64" ]; then NODE_ARCH="x64"; 
elif [ "$ARCH" = "arm64" ]; then NODE_ARCH="arm64"; fi

# 2. 从淘宝npm镜像下载Node.js二进制包（速度快）
curl -fsSL https://registry.npmmirror.com/-/binary/node/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.gz \
    -o /tmp/node.tar.gz

# 3. 解压到系统目录
tar -xzf /tmp/node.tar.gz -C /usr/local --strip-components=1

# 4. 清理临时文件
rm /tmp/node.tar.gz

# 5. 创建软链接（兼容性）
ln -s /usr/local/bin/node /usr/local/bin/nodejs
```

**优势说明**：
- ✅ 无需配置apt源，避免GPG密钥和源地址变更问题
- ✅ 直接从淘宝CDN下载，速度快且稳定
- ✅ 支持x64和arm64架构
- ✅ 版本固定（18.20.4 LTS），确保构建可重现

### 为什么选择这些镜像源？

1. **华为云Docker镜像**: 
   - 国内最大的云服务商之一
   - 全国多地CDN节点
   - 企业级稳定性

2. **阿里云Debian源**: 
   - 阿里巴巴维护，可靠性高
   - 同步频率高
   - 访问速度快

3. **清华大学镜像站**: 
   - 教育网核心节点
   - 同步及时（5-10分钟）
   - 学术机构，长期稳定

4. **淘宝npm镜像**: 
   - 阿里巴巴开源团队维护
   - npm官方推荐的中国镜像
   - 同步最快（10分钟）

## 🐛 常见问题

### 1. GPG密钥下载失败
```
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/nodesource/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
```
**解决**: 检查网络连接，或暂时关闭防火墙/代理

### 2. pip安装超时
```dockerfile
RUN pip install --no-cache-dir --default-timeout=1000 -r requirements.txt
```
**说明**: 已设置超时时间为1000秒，应该足够

### 3. Node.js版本问题
当前配置安装Node.js 18.20.4 LTS，如需其他版本：
```dockerfile
# 修改 NODE_VERSION 变量
NODE_VERSION=20.11.1  # 改为20.x LTS
NODE_VERSION=16.20.2  # 改为16.x LTS

# 可用版本查询：https://registry.npmmirror.com/-/binary/node/
```

### 4. 构建缓存问题
如需强制重新构建（不使用缓存）：
```bash
docker build --no-cache -f "Dockerfile国内源版" -t agentsstock1:latest .
```

## 📊 构建日志示例

```
[ 1/10] FROM swr.cn-north-4.myhuaweicloud.com/...  ✅ 1.2s
[ 2/10] RUN echo "deb https://mirrors.aliyun.com...  ✅ 0.3s
[ 3/10] WORKDIR /app                                ✅ 0.0s
[ 4/10] RUN apt-get update && apt-get install...   ✅ 45.2s
[ 5/10] RUN mkdir -p /etc/apt/keyrings &&...       ✅ 28.5s
[ 6/10] RUN node --version && npm --version        ✅ 0.4s
[ 7/10] RUN npm config set registry...             ✅ 0.2s
[ 8/10] COPY requirements.txt .                     ✅ 0.1s
[ 9/10] RUN pip config set && pip install...       ✅ 156.3s
[10/10] COPY . .                                    ✅ 2.1s

✅ 总计: 约 4-5 分钟
```

## 🔄 更新镜像源

如果某个镜像源不可用，可以切换备选源：

### Debian源备选
```dockerfile
# 清华源
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main
# 中科大源
deb https://mirrors.ustc.edu.cn/debian/ bookworm main
# 华为源
deb https://repo.huaweicloud.com/debian/ bookworm main
```

### npm源备选
```dockerfile
# 淘宝（推荐）
npm config set registry https://registry.npmmirror.com/
# 腾讯云
npm config set registry https://mirrors.cloud.tencent.com/npm/
# 华为云
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
```

### pip源备选
```dockerfile
# 清华（推荐）
https://pypi.tuna.tsinghua.edu.cn/simple/
# 阿里云
https://mirrors.aliyun.com/pypi/simple/
# 中科大
https://pypi.mirrors.ustc.edu.cn/simple/
# 豆瓣
https://pypi.douban.com/simple/
```

## 📝 完整构建流程

```bash
# 1. 确保在项目根目录
cd /path/to/agentsstock1

# 2. 创建 .env 文件
cp .env.example .env
# 编辑 .env，填入 DEEPSEEK_API_KEY

# 3. 构建镜像（国内源版）
docker build -f "Dockerfile国内源版" -t agentsstock1:latest .

# 4. 运行容器
docker run -d -p 8503:8501 -v $(pwd)/.env:/app/.env --name agentsstock1 agentsstock1:latest

# 5. 查看日志
docker logs -f agentsstock1

# 6. 访问应用
# 打开浏览器: http://localhost:8503
```

## 🎯 推荐配置

### 开发环境
```bash
docker build -f "Dockerfile国内源版" -t agentsstock1:dev .
docker run -d -p 8503:8501 \
  -v $(pwd)/.env:/app/.env \
  -v $(pwd):/app \
  --name agentsstock1-dev \
  agentsstock1:dev
```

### 生产环境
```bash
docker build -f "Dockerfile国内源版" -t agentsstock1:prod .
docker run -d -p 8503:8501 \
  -v $(pwd)/.env:/app/.env \
  -v $(pwd)/data:/app/data \
  --restart unless-stopped \
  --name agentsstock1-prod \
  agentsstock1:prod
```

## ✅ 验证构建结果

```bash
# 检查Node.js版本
docker run --rm agentsstock1:latest node --version
# 预期输出: v18.20.x

# 检查npm版本
docker run --rm agentsstock1:latest npm --version
# 预期输出: 10.x.x

# 检查Python版本
docker run --rm agentsstock1:latest python --version
# 预期输出: Python 3.12.x

# 检查已安装的Python包
docker run --rm agentsstock1:latest pip list
```

## 📚 参考资源

- [清华大学开源软件镜像站](https://mirrors.tuna.tsinghua.edu.cn/)
- [阿里巴巴开源镜像站](https://developer.aliyun.com/mirror/)
- [淘宝npm镜像](https://npmmirror.com/)
- [华为云镜像站](https://mirrors.huaweicloud.com/)

---

**享受高速Docker构建体验！** 🚀

