宝塔面板是一款非常好用的服务器管理面板,我们有些项目中为了方便客户操作管理服务器,会给服务器装这个面板,常规情况下宝塔面板安装在服务器中会自动启动,但在docker容器中会因为挂载本地目录的原因有时候无法自启成功。
启动容器后通过docer exec 命令进入宝塔所在容器后,手动重启宝塔的服务后可以运行,但是web服务器又无法运行,需要登录宝塔面板后再次点击启动才可以,这样如果服务器断电或非计划关机后,web和对应的服务器就没法自动重启,安装宝塔面板就没有实际性意义了。
我们可以创建一个脚本文件,在docer的容器在启动的时候,执行一次宝塔重启、web服务器重启、mysql重启、如果还有其他的需要可以一并添加,我这里使用通的web服务器是nginx、mysql、php,所以我在系统根目录创建了stat.sh的文件,里面的内容如下:
/usr/bin/bt restart;
/etc/init.d/nginx restart;
/etc/init.d/php-fpm-73 restart;
/etc/init.d/mysqld restart;
但是另一个问题出现了,docker容器的启动很快,在启动的时候挂载的文件还没准备完成,导致命令启动失败,所以在启动后执行这个脚本的时候需要加一条延迟的命令,
sleep 5;
意思是在启动后5秒在往下执行命令。
这样容器在启动后,docker就回自动对脚本中涉及到的服务进行重启了。
网友留言: