Appearance
Docker 部署
本文档介绍如何使用 Docker 部署 TGNL Admin 项目。
前置要求
- Docker 和 Docker Compose 已安装
- 确保
tgnl-home的 Next.js 服务已在宿主机运行(localhost:3000) - 确保端口 3000 未被占用(或修改
.env中的PORT)
快速启动
方式一:使用启动脚本(推荐)
bash
cd tgnl-admin
./start-docker.sh方式二:手动启动
bash
cd tgnl-admin
# 1. 创建 .env 文件(如果不存在)
cp .env.example .env
# 编辑 .env 文件,修改数据库密码等配置
# 2. 检查 config.txt 配置
# 确保 energy_pool_api=http://host.docker.internal:3000
# 3. 构建并启动
docker compose build
docker compose up -d
# 4. 查看日志
docker compose logs -f服务说明
服务组成
app (tgnl-admin-app)
- Nuxt 3 管理后台
- 端口:3000(可通过
.env的PORT修改) - 访问路径:
http://localhost:3000/admin
db (tgnl-admin-db)
- MySQL 8.0 数据库
- 端口:3306(仅内部访问)
bot (tgnl-admin-bot)
- Telegram 机器人
- 自动连接数据库和 Nuxt API
- 通过
host.docker.internal:3000访问宿主机上的tgnl-home能量池服务
配置说明
.env 文件
env
# 数据库配置
DB_HOST=db
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root
DB_NAME=tgnl
# 应用配置
PORT=3000
APP_BASE_PATH=/admin
APP_HOST=app
# Bot Token(可选,也可以从 config.txt 读取)
BOT_TOKEN=
# 时区
TZ=Asia/Shanghaiconfig.txt 配置
关键配置项:
TOKEN: Telegram Bot Tokenenergy_pool_api: 能量池 API 地址(已配置为http://host.docker.internal:3000)username/password: 能量池账号密码
常用命令
bash
# 查看服务状态
docker compose ps
# 查看所有日志
docker compose logs -f
# 查看单个服务日志
docker compose logs -f bot
docker compose logs -f app
docker compose logs -f db
# 重启服务
docker compose restart
docker compose restart bot
# 停止服务
docker compose down
# 停止并删除数据卷(⚠️ 会删除数据库数据)
docker compose down -v
# 重新构建
docker compose build --no-cache
docker compose up -d故障排查
1. Bot 无法连接能量池 API
问题:机器人无法访问 http://host.docker.internal:3000
解决:
- 确保
tgnl-home的 Next.js 服务在宿主机运行 - 检查
config.txt中的energy_pool_api配置 - 在 Linux 系统上,
host.docker.internal可能需要额外配置
2. 数据库连接失败
问题:应用无法连接数据库
解决:
- 检查
.env中的数据库配置 - 确保
db容器已启动:docker compose ps - 查看数据库日志:
docker compose logs db
3. 端口冲突
问题:端口 3000 已被占用
解决:
- 修改
.env中的PORT为其他端口(如 3001) - 或停止占用端口的服务
4. Bot 启动失败
问题:机器人容器不断重启
解决:
- 查看 bot 日志:
docker compose logs bot - 检查
config.txt中的TOKEN是否正确 - 检查 Python 依赖是否安装成功
数据持久化
- 数据库数据存储在 Docker volume
tgnl-admin_db_data - 机器人日志存储在
./nl-2333/logs/目录 config.txt通过 volume 挂载,修改后需要重启 bot 容器
更新配置
更新 config.txt
bash
# 1. 修改 config.txt
vim nl-2333/config.txt
# 2. 重启 bot 容器(支持热重载,但建议重启)
docker compose restart bot更新代码
bash
# 1. 修改代码后重新构建
docker compose build bot
docker compose up -d bot网络说明
- Bot 容器通过
host.docker.internal:3000访问宿主机上的tgnl-home服务 - 在 macOS/Windows 上,
host.docker.internal自动可用 - 在 Linux 上,已通过
extra_hosts配置支持