寶塔面板是一款非常好用的服務器管理面板,我們有些項目中為了方便客戶操作管理服務器,會給服務器裝這個面板,常規(guī)情況下寶塔面板安裝在服務器中會自動啟動,但在DOCKER容器中會因為掛載本地目錄的原因有時候無法自啟成功。
啟動容器后通過docer exec 命令進入寶塔所在容器后,手動重啟寶塔的服務后可以運行,但是web服務器又無法運行,需要登錄寶塔面板后再次點擊啟動才可以,這樣如果服務器斷電或非計劃關機后,web和對應的服務器就沒法自動重啟,安裝寶塔面板就沒有實際性意義了。
我們可以創(chuàng)建一個腳本文件,在docer的容器在啟動的時候,執(zhí)行一次寶塔重啟、web服務器重啟、mysql重啟、如果還有其他的需要可以一并添加,我這里使用通的web服務器是nginx、mysql、php,所以我在系統(tǒng)根目錄創(chuàng)建了stat.sh的文件,里面的內(nèi)容如下。
/usr/bin/bt restart;
/etc/init.d/nginx restart;
/etc/init.d/php-fpm-73 restart;
/etc/init.d/mysqld restart;
但是另一個問題出現(xiàn)了,docker容器的啟動很快,在啟動的時候掛載的文件還沒準備完成,導致命令啟動失敗,所以在啟動后執(zhí)行這個腳本的時候需要加一條延遲的命令,
sleep 5; 意思是在啟動后5秒在往下執(zhí)行命令。
這樣容器在啟動后,docker就回自動對腳本中涉及到的服務進行重啟了。