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
纸盒博客
评论(0)
暂无