Docker版本的宝塔MySQL启动问题

8月19日 85 0

N1 的内存实在捉襟见肘,所以想试试用 Docker 跑宝塔来搭内网站点。不过宝塔官方的 Docker 镜像版本太低了,连 12.0.0 正式版都没有,编译安装MySQL内存不足,会失败,内置LNMP环境勉强装上后 MySQL 也一直起不来。

MySQL 启动问题

排查后发现 MySQL 启动失败的根因在于容器启动脚本的逻辑时序错误。原脚本先检测 /www/server/panel/data/o.pl 文件以判断是否启动 MySQL,随后才调用 restore_panel_data 函数恢复面板默认数据。由于该文件依赖数据恢复过程生成,检测时必然不存在,导致 MySQL 被错误跳过。正确的执行顺序应为先恢复数据,再检测并启动服务。

restore_panel_data () {...}
...
restore_panel_data 2>/dev/null
O_pl=$(cat /www/server/panel/data/o.pl)
...

MySQL 默认密码

修复上一个问题之后宝塔不能正确读出 MySQL 的默认密码,需要手动在面板后台点击数据库密码进行同步,不够优雅。这里在 MySQL 的初始化脚本利用 bt 命令修改一下密码。

echo "设置 MySQL 密码..."
# 生成随机密码
mysqlpwd=$(cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 16)
# 老的密码修改逻辑
# ${Setup_Path}/bin/mysqladmin -u root password "${mysqlpwd}"
# 调用 bt 命令设置 MySQL密码
bt <<EOF
7
${mysqlpwd}
EOF

下载

顺手将安装版本调整到到了稳定版12.0.0,优化了一些小的错误提示。
适配X86、ARM。
https://github.com/Zisbusy/Baota-Docker

Linux宝塔

相关文章

记一次 1Panel 异常资源占用导致服务器宕机问题

评论(0)

暂无

发布评论