You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.5 KiB
3.5 KiB
宝塔 + 宿主机 MySQL + Docker 应用(内网 30325)
适用于:
- MySQL:宝塔面板,已导入
chajia.sql - Redis:本项目 Docker Compose 内的 redis 容器
- 应用:Docker 容器(next-app + rpa-worker + scheduler)
- 访问:内网
http://服务器IP:30325
一、宝塔 MySQL 准备
- 已创建数据库
chajia,字符集 utf8mb4 - 已导入
数据库/chajia.sql - 已创建数据库用户(如
chajia_user),并赋予 chajia 库全部权限
允许 Docker 容器连接宿主机 MySQL
容器通过 host.docker.internal 访问宿主机。宝塔 MySQL 默认可能只监听 127.0.0.1,需确认:
- 宝塔 → 数据库 → root 密码 旁 权限 / 或 MySQL 设置
- 确保 MySQL 对 Docker 网段可连(常见做法二选一):
做法 A(推荐):在宝塔为该用户授权远程主机 172.% 或 172.17.%
-- 在宝塔 phpMyAdmin 或终端执行(按实际用户名改)
CREATE USER 'chajia_user'@'172.%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON chajia.* TO 'chajia_user'@'172.%';
FLUSH PRIVILEGES;
做法 B:MySQL 配置 bind-address = 0.0.0.0(需评估安全,仅内网服务器可考虑)
测试(在服务器上)
# 查看 Docker 网桥网关(多为 172.17.0.1)
ip addr show docker0
# 从宿主机测试宝塔用户能否登录
mysql -h 127.0.0.1 -u chajia_user -p chajia
二、配置 .env
cd /opt/chajia # 你的代码目录
cp deploy/.env.bt-host-mysql.example .env
nano .env
必改项:
| 变量 | 示例 |
|---|---|
APP_PORT |
30325 |
PUBLIC_HOST |
服务器内网 IP,如 192.168.1.100 |
DATABASE_URL |
mysql://chajia_user:密码@host.docker.internal:3306/chajia |
JWT_SECRET |
随机长串 |
HOST_SERVICE_TOKENS |
给内网其它系统的 API Token |
密码含 @、# 等需 URL 编码。
三、启动
chmod +x deploy/install-bt-host-mysql.sh
bash deploy/install-bt-host-mysql.sh
不要再执行 install.sh(那个会再起一个容器 MySQL)。
四、内网访问
| 用途 | 地址 |
|---|---|
| 管理端 | http://192.168.x.x:30325/admin/alerts |
| API | http://192.168.x.x:30325/api/... |
| 默认账号 | admin_demo / Demo@123 |
内网其它系统 Base URL:http://<服务器IP>:30325
详见 deploy/API.md。
五、宝塔防火墙 / 安全组
- 放行 30325(内网互通即可,不必对公网开放)
- 不要对公网开放 3306(MySQL)、6379(Redis)
若用宝塔 Docker 管理器 发布,端口映射填:30325 → 3000。
六、故障排查
| 现象 | 处理 |
|---|---|
Can't connect to MySQL |
检查用户是否授权 172.%;DATABASE_URL 主机是否为 host.docker.internal |
一直 processing |
docker compose -f deploy/docker-compose.bt-host-mysql.yml logs -f rpa-worker |
| 端口不通 | 宝塔防火墙、iptables、云安全组是否放行 30325 |
| 连不上 Redis | 确认 redis 容器 Up;应用应使用 redis://redis:6379(compose 已注入) |
七、架构示意
内网其它系统 ──HTTP:30325──► [Docker] next-app
│
├──► [Docker] redis
│
└──► host.docker.internal:3306
│
[宝塔] MySQL chajia