Ctrl K
ComunidadGuías…

DOCKER.md

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Edgechat Docker 一键部署

## 🚀 一键启动(推荐)

```bash
EDGECHAT_ADMIN_PASSWORD='请替换为强密码' ./docker-start.sh
```

这个脚本会自动:
- ✅ 构建并启动 Docker 容器
- ✅ 初始化数据库表
- ✅ 使用与 GitHub Actions 相同的 PBKDF2 规则创建管理员账户
- ✅ 显示访问信息

## 📱 访问应用

启动后访问:**http://localhost:8788**

## 🔐 管理员账户

- **用户名**:读取 `EDGECHAT_ADMIN_USERNAME`,未设置时使用 `admin`
- **密码**:必须通过 `EDGECHAT_ADMIN_PASSWORD` 显式传入
- **显示名称**:读取 `EDGECHAT_ADMIN_DISPLAY_NAME`,未设置时使用 `Administrator`

脚本不会把密码写入仓库或固定在启动文件中。重复运行会复用已有管理员,不会覆盖现有密码。

## 🛠️ 手动部署

### 1. 启动容器

```bash
docker compose up -d --build
```

### 2. 初始化数据库

```bash
docker compose exec edgechat wrangler d1 execute cfchat-db --local --file=./worker/schema.sql
```

`cfchat-db` is the retained legacy D1 database name. Keep using it unless you are doing a planned data migration.

### 3. 创建管理员账户

```bash
docker compose exec \
  -e EDGECHAT_ADMIN_USERNAME=admin \
  -e EDGECHAT_ADMIN_PASSWORD='请替换为强密码' \
  -e EDGECHAT_ADMIN_DISPLAY_NAME=Administrator \
  edgechat node .github/scripts/generate-admin-bootstrap-sql.mjs
docker compose exec edgechat wrangler d1 execute cfchat-db --local --file=.tmp/edgechat-admin-upsert.sql
```

## 📊 常用命令

```bash
# 查看容器状态
docker compose ps

# 查看日志
docker compose logs -f

# 重启服务
docker compose restart

# 停止服务
docker compose down

# 完全清理(包括数据)
docker compose down -v
```

## 🔧 故障排查

### 问题:显示"服务器开小差了"

**原因**:数据库未初始化

**解决**:运行 `./docker-start.sh` 或手动执行步骤 2 和 3

### 问题:端口被占用

**解决**:修改 `docker-compose.yml` 中的端口映射

```yaml
ports:
  - "8788:8787"  # 改为其他端口,如 "9000:8787"
```

### 问题:容器一直重启

**解决**:查看日志找出原因

```bash
docker compose logs --tail=50
```

## 🌐 生产部署

Docker 仅用于本地开发和测试。

生产环境请部署到 Cloudflare Workers:

```bash
# 配置 wrangler.toml
# 然后部署
npm run deploy
```

## 📝 注意事项

- 本地开发使用 SQLite(D1 本地模式)
- 数据存储在 `.wrangler/state/` 目录
- 停止容器不会丢失数据
- 使用 `docker compose down -v` 会清除所有数据