我正在嘗試制作一個使用 MySQL 影像作為其基礎的影像,一旦我知道服務器已啟動,我想創建一個資料庫(和其他一些東西)。我有一個引導腳本作為我的入口點,其中我做的第一件事是在后臺運行 mysql 影像的入口點腳本作為./entrypoint.sh mysqld &.
目前,我在此之后做的是啟動一個帶有一些睡眠的回圈,用于mysqladmin --ping檢查服務器是否已啟動。一旦它啟動,我就開始我的其他命令并開始創建我想要的資料庫。
當 mysql 已經初始化(即不是第一次啟動容器/entrypoint.sh 被執行)時,這可以正常作業。但是在第一次運行時,影像似乎創建了一個臨時的 mysql 服務器(mysqld --daemonize --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}"-來自入口點腳本),運行一些命令然后停止該服務器。發布它啟動實際服務器。我面臨的問題是 mysqladmin ping 命令實際上對臨時服務器本身做出了成功的反應,因此我的腳本嘗試創建失敗的資料庫。
我在這里閱讀了許多答案,說要運行 ping 命令(我正在使用)來檢查服務器是否已啟動,但是我看到的沒有一個提到有關此臨時服務器或如何檢測它是否是臨時服務器的任何內容。
關于我如何檢測到這一點的任何線索?或者,如果我可以在上面提到的流程的任何部分做更好的事情?
我現在腦子里確實有一個 hacky 解決方案。一個涉及更新入口點腳本以使用與臨時服務器的默認套接字檔案不同的檔案,然后我可以使用它來查看正在運行的服務器是否是臨時的,但如果存在標準解決方案,我寧愿不求助于這個。
謝謝!
uj5u.com熱心網友回復:
因為初始化使用--skip-networking,--protocol tcp用作引數來mysqladmin執行pingon tcp,也就是最終實體運行時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393634.html
標籤:mysql 码头工人 壳 docker-compose 玛丽亚数据库
