mysql - 错误启动mysql docker

标签 mysql docker containers dockerhub

我正在 docker 中创建镜像到 mysql 安装模式,但是启动 mysql 时出错。

My Dockerfile

处理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.

Stack trace complete

有什么建议吗?

最佳答案

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/

相关文章:

mysql - 这是 MySQL 中更新查询的正确方法吗?

php - php mysql 中的贸易结算日期

mysql - ActiveRecord 未定义方法 `has_key?' for nil :NilClass error

docker - 适用于USB设备的Docker群

javascript - docker生产代码构建

javascript - 多次滚动容器 div

CSS 容器/背景不显示;其余布局工程

mysql - 没有主键的数据库表

docker - 无法在 docker 容器中找到文件

c - 在 C 语言中,通用容器还是安全容器?