我正在尝试为我的 LAMP 项目设置 Dockerfile,但是在启动 MySQL 时遇到了一些问题。我的 Dockerfile 上有以下几行:
VOLUME ["/etc/mysql", "/var/lib/mysql"]
ADD dump.sql /tmp/dump.sql
RUN /usr/bin/mysqld_safe & sleep 5s
RUN mysql -u root -e "CREATE DATABASE mydb"
RUN mysql -u root mydb < /tmp/dump.sql
但我不断收到此错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
关于如何在 Dockerfile 构建期间设置数据库创建和转储导入的任何想法?
原文由 vinnylinux 发布,翻译遵循 CC BY-SA 4.0 许可协议
--- 中的每个
Dockerfile
RUN
指令都在不同的层中执行(如RUN
的文档中所述)。在您的
Dockerfile
中,您有三个RUN
指令。问题是 MySQL 服务器只在第一次启动。在其他情况下,没有 MySQL 正在运行,这就是为什么您使用mysql
客户端出现连接错误的原因。要解决此问题,您有 2 个解决方案。
解决方案一:使用一行
RUN
解决方案2:使用脚本
创建一个可执行脚本
init_db.sh
:将这些行添加到您的
Dockerfile
: