在 Docker 中運行陀螺匠項目時,如果容器未正常關閉或直接停止,再次啟動時可能會卡在提示:“Waiting Swoole[PID=1] to stop” ,導致程序無法正常啟動。
問題原因
項目在運行時會在 storage 目錄下生成一個 laravels.pid 文件,用于記錄主進程的 PID。
但如果容器異常退出或沒有清理該文件,項目啟動時檢測到該文件已存在,便會認為程序已經(jīng)在運行,從而拒絕啟動。
解決方法
我們可以在容器啟動時自動清理該文件,避免影響程序啟動。
解決方法如下,修改項目內(nèi)的 helper/docker-compose/php/entrypoint.sh 文件,在第四行( set -e 之后) 加入清理文件的命令即可:
rm -f /var/www/storage/laravels.pid
重建鏡像
修改完成后,切換回項目根目錄,執(zhí)行以下命令重新構建并啟動容器:
docker compose build
docker compose up -d