这是一个基于Docker的MySQL数据库项目,配合frp内网穿透服务,实现远程数据库访问。 cnb机制最长18小时,凌晨4点会清理掉长时间不在线的开发环境 定时任务 系统已配置自动重启任务,每天在 2点、10点、18点 自动重新开启环境,确保服务可用性。
环境重启时有约30秒的空窗期,数据库连接会中断 当前配置没有数据备份机制,重启环境会导致数据丢失 请务必自行实现数据同步和备份方案 项目结构
/workspace/ ├── mysql/ # MySQL服务配置目录 │ ├── docker-compose.yml # MySQL容器配置 │ ├── config/ # MySQL配置文件目录 │ └── data/ # MySQL数据持久化目录 ├── frpc/ # frp客户端配置目录 │ ├── docker-compose.yml # frp容器配置 │ ├── frpc # frp客户端可执行文件 │ └── frpc.toml # frp客户端配置文件 ├── .cnb.yml # CNB构建配置文件 ├── .cnb/ # CNB配置目录 │ ├── settings.yml # CNB环境设置 │ ├── web_trigger.yml # Web触发器配置 │ └── ... ├── .gitignore # Git忽略文件 └── README.md # 项目说明文档
定时任务密钥配置 同组织下创建database-key仓库,文件名为api-token.yml
UCNB_TOKEN: "<PASSWORD>"
MySQL 数据库 同组织下创建database-key仓库,文件名为mysql.yml
MYSQL_VERSION: "自定义版本"
MYSQL_ROOT_PASSWORD: "root密码"
FRP 内网穿透 同组织下创建database-key仓库(与MySQL配置同一仓库),文件名为frpc.yml
frpc_content: |
# 日志配置
log.level = "info"
log.to = "/app/frpc.log"
# 服务端配置
serverAddr = "frps服务器ip"
serverPort = frps的端口
auth.token = "frps的密码"
# MySQL代理配置
[[proxies]]
name = "mysql"
type = "tcp"
localIP = "172.17.0.1"
localPort = 3306
remotePort = 30006
在database-key仓库中创建mysql.yml配置文件 在database-key仓库中创建frpc.yml配置文件 系统会自动启动MySQL和FRP服务 MySQL默认端口:3306(本地)/ 30006(远程)
MySQL配置 配置文件目录: /workspace/mysql/config/ 数据目录: /workspace/mysql/data/ 自定义配置可放置在/workspace/mysql/config/目录下 FRP配置 配置文件: frpc/frpc.toml 日志文件: /app/frpc.log
没有数据备份机制 - 环境重启会导致MySQL数据全部丢失 定时重启风险 - 每天2点、10点、18点自动重启,数据会清空 必须自行备份数据 - 请在外部实现数据同步和备份 环境关闭即数据丢失 - 关闭环境后数据无法恢复
使用外部数据库服务 实现定时数据导出 配置数据同步到其他存储 考虑使用持久化存储方案
# 查看MySQL服务状态
cd mysql && docker-compose ps
# 查看MySQL日志
cd mysql && docker-compose logs -f mysql-db
# 查看FRP日志
docker-compose logs -f frpc
# 停止MySQL服务
cd mysql && docker-compose down
# 重启MySQL服务
cd mysql && docker-compose restart mysql-db
# 重启FRP服务
docker-compose restart frpc
使用强密码作为数据库root密码 定期备份MySQL数据 在生产环境中限制网络访问权限 定期更新MySQL版本 不要在公网直接暴露数据库服务,务必通过FRP等安全隧道访问