我正在使用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"
奇怪的是,这样做通常还会使容器崩溃,并使其处于每次启动时都会再次崩溃的状态.