DOCKER.md
Rama master · réplica de lectura del repositorio original.
# 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` 会清除所有数据