Dockerfile:无缝 MySQL 设置和数据导入
在 Dockerfile 构建期间设置 MySQL 并导入数据可能会令人畏惧,但它并不必须是。让我们解决使用提供的 Dockerfile 代码片段的开发人员面临的常见错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
解决此问题的关键在于了解官方 MySQL Docker 映像的运行方式。在最新的迭代中,该映像引入了一项允许在启动期间导入数据的功能。要利用此功能,您可以按如下方式修改 Dockerfile:
# Mount the data volume for persistent MySQL data storage VOLUME ["/etc/mysql", "/var/lib/mysql"] # Import database dump during Docker image build ADD dump.sql /tmp/dump.sql RUN mysql -u root -e "CREATE DATABASE mydb" RUN mysql -u root mydb < /tmp/dump.sql # Start MySQL daemon CMD ["mysqld"]
通过在末尾添加 CMD ["mysqld"] 行,您的 Docker 映像将在创建容器时自动启动 MySQL 守护进程,从而允许用于构建过程中的数据导入。
其他注意事项
如果您希望持久化即使容器停止或删除,也可以考虑使用类似于以下内容的 Dockerfile 创建一个单独的数据容器:
FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8 VOLUME /var/lib/mysql CMD ["true"]
此数据容器可确保即使在容器停止或删除时也能保留您的 MySQL 数据。主 MySQL 容器未运行。
总之,通过利用官方 MySQL Docker 镜像的数据导入功能并使用单独的数据容器进行持久化,您可以在 Dockerfile 中无缝设置 MySQL 并导入数据构建。
以上是如何在 Dockerfile 构建中无缝设置 MySQL 并导入数据?的详细内容。更多信息请关注PHP中文网其他相关文章!