错误启动mysql docker

我正在docker中创build一个映像到mysql安装模式,但是它给错误启动mysql。

我的Dockerfile

处理Dockerfile的第25行时发生错误:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) 

我发现这个错误是因为mysql没有运行。 docker打印下面旋转线22:

 bin boot dev etc home lib lib64 media mnt opt proc root run sbin scripts srv sys tmp usr var MySQL is stopped. 

堆栈跟踪完成

任何build议?

docker守护进程将逐个执行RUN命令并提交结果,看起来你的mysql服务状态没有被提交给映像。 要解决这个问题,你可以试试这些方法

  • 将所有命令放入一个RUN命令
    RUN echo $(service mysql restart) && echo $(service mysql status) && sudo mysql -uroot -pmysql_pass -e "CREATE DATABASE wordpress;" && sudo mysql -uroot -pmysql_pass -e "CREATE USER 'wordpressuser'@'%';" && sudo mysql -uroot -pmysql_pass -e "SET PASSWORD FOR 'wordpressuser'@'%'= PASSWORD('${mysql_pass}');" && sudo mysql -uroot -pmysql_pass -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'%'; FLUSH PRIVILEGES;"

  • 用bash脚本初始化你的mysql entrypoint

init_mysql.sh

 #!/bin/sh sudo mysql -uroot -pmysql_pass -e "CREATE DATABASE wordpress;" sudo mysql -uroot -pmysql_pass -e "CREATE USER 'wordpressuser'@'%';" sudo mysql -uroot -pmysql_pass -e "SET PASSWORD FOR 'wordpressuser'@'%'= PASSWORD('${mysql_pass}');" sudo mysql -uroot -pmysql_pass -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'%'; FLUSH PRIVILEGES;" 

并将以下行添加到dockerfile

 ADD init_mysql.sh / RUN \ cd / \ chmod 777 init_mysql.sh CMD ./init_mysql.sh 

你需要弄清楚为什么MySQL没有启动。 login到环境并手动尝试启动MySQL并查看错误是什么。

你有没有考虑将你的图像放在官方的MySQL Docker镜像上? https://registry.hub.docker.com/_/mysql/