中的每条
RUN指令都在
Dockerfile不同的层中执行(如的文档中所述
RUN)。
在中
Dockerfile,您有三个
RUN说明。问题是MySQL服务器仅在第一个启动。在其他版本中,没有MySQL正在运行,这就是为什么
mysql客户端出现连接错误的原因。
要解决此问题,您有2个解决方案。
解决方案1:使用单行 RUN
RUN /bin/bash -c "/usr/bin/mysqld_safe --skip-grant-tables &" && sleep 5 && mysql -u root -e "CREATE DATAbase mydb" && mysql -u root mydb < /tmp/dump.sql
解决方案2:使用脚本
创建一个可执行脚本
init_db.sh:
#!/bin/bash/usr/bin/mysqld_safe --skip-grant-tables &sleep 5mysql -u root -e "CREATE DATAbase mydb"mysql -u root mydb < /tmp/dump.sql
将这些行添加到您的
Dockerfile:
ADD init_db.sh /tmp/init_db.shRUN /tmp/init_db.sh



