我正在 docker 中创建镜像到 mysql 安装模式,但是启动 mysql 时出错。
处理Dockerfile第25行时出现错误:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
我发现这个错误是因为mysql没有运行。下面的 docker print 旋转第 22 行:
bin boot dev etc home lib lib64 media mnt opt proc root run sbin scripts srv sys tmp usr var MySQL is stopped.
有什么建议吗?
最佳答案
docker daemon 会一条一条的执行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 "创建用户 'wordpressuser'@'%';"&& sudo mysql -uroot -pmysql_pass -e “为‘wordpressuser’设置密码@‘%’= PASSWORD(‘${mysql_pass}’);” && sudo mysql -uroot -pmysql_pass -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'%'; FLUSH PRIVILEGES;"
使用 bash 脚本在
entrypoint
中初始化您的 mysql。
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 - 错误启动mysql docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256874/