错误启动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/