Docker - Dockerfile 中使用 RUN 的 MySQL 命令(错误 2002)

2024-01-11

我正在使用 Docker 创建一个以 mysql 作为基础镜像的 dockerfile:

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 在我尝试创建数据库的步骤中失败,它没有完成构建,并且我收到此错误:

错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器

当我删除 #create database run 命令时,dockerfile 将构建,并且我能够从该映像运行容器。我知道这不是mysql服务器的问题,因为我可以进入容器并手动运行mysql命令成功并且服务状态为运行。

在文件中使用环境变量,即 MYSQL_ROOT_PASSWORD 也允许我成功创建数据库,但这仅适用于单个数据库,我需要能够使用 mysql 命令进行查询,例如创建其他数据库/分配用户等。

这可能是因为我需要指定 docker 容器的主机和端口,但这仍然不允许我连接

RUN mysql -u root -ppassword -h 127.0.0.1 -P 3308 -e "CREATE DATABASE dbname"

奇怪的是,这样做也经常会导致容器崩溃,并使其处于每次我尝试重新启动容器时都会在启动时再次崩溃的状态。


我认为问题可能在于用于构建 Dockerfile 的容器内的服务尚未启动。

  • 尝试一步启动并配置 MySQL 服务器。作为参考,请检查此文件:https://github.com/dockerfile/mysql/blob/master/Dockerfile https://github.com/dockerfile/mysql/blob/master/Dockerfile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker - Dockerfile 中使用 RUN 的 MySQL 命令(错误 2002) 的相关文章

随机推荐