我使用泊塢窗來創建MySQL作爲基礎映像dockerfile:泊塢窗 - 使用RUN(ERROR 2002)內Dockerfile的MySQL命令
FROM mysql
#set root pass
ENV MYSQL_ROOT_PASSWORD password
#update linux
RUN apt-get update
#create database
RUN mysql -u root -ppassword -e "CREATE DATABASE dbname"
#install vim
RUN apt-get install vim -y
上一步,我嘗試創建一個數據庫dockerfile失敗,它沒有完成建設,我收到此錯誤:
ERROR 2002(HY000):無法通過套接字連接到本地MySQL服務器 '/var/run/mysqld/mysqld.sock'
當我刪除#create數據庫時dockerfile將構建的ase運行命令,我可以從該映像運行容器。我知道這不是mysql服務器的問題,因爲我可以輸入容器併成功手動運行mysql命令並且服務狀態正在運行。
使用環境變量即MYSQL_ROOT_PASSWORD內的文件,也可以讓我成功地創建一個數據庫,但這隻會用一個單一的數據庫工作,我需要能夠使用mysql命令進行查詢,如創建額外的數據庫/用戶分配等
這可能是因爲我需要指定泊塢窗容器的主機和端口,但是這仍然沒有允許我連接
RUN mysql -u root -ppassword -h 127.0.0.1 -P 3308 -e "CREATE DATABASE dbname"
奇怪的是,這樣做還經常死機容器並將其置於每次啓動時都會再次崩潰的狀態在我嘗試重新啓動它。
我通過複製的MySQL Dockerfile的內容,並增加我的查詢到運行命令的末尾嘗試這種解決方案,這個成功,但任何容器構建我在創建時使用此映像也會崩潰。 – user3495336
默認情況下,您構建的容器不會運行所有服務。所以一旦你建立了容器,你應該再次啓動mysqld(在該容器中)。 –
mysqld已經在運行,因爲它已被設置爲在啓動時運行 – user3495336