使用Docker的MySQL设置

我试图创build一个设置,当我做一个“docker运行”我已经创build一个Dockerfile,docker将安装和设置MySQL,然后创build一个数据库供我使用。

下面是我从现有的dockerfile / mysql中提取的简单的docker文件

FROM dockerfile/mysql COPY dbsetup.sql /tmp/dbsetup.sql RUN bash -c "/usr/bin/mysqld_safe &" && \ sleep 5 && \ mysql -u root -e "CREATE DATABASE mydb" 

它似乎运行,但是当我连接到数据库(使用我从boot2docker ip命令收到的boot2docker ip ),数据库不存在。

有人有主意吗?

注意:我最初尝试在单独的RUN语句中运行所有这三个命令,但是这并不起作用。 为什么在这里解释。

你应该在具有以下RUN语句的dockerfile / mysql Dockerfile上举例说明:

 RUN echo "mysqld_safe &" > /tmp/config \ && echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config \ && echo "mysql -e 'GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" WITH GRANT OPTION;'" >> /tmp/config \ && bash /tmp/config \ && rm -f /tmp/config 

在你的情况下,你会把你的Dockerfile:

 RUN echo "mysqld_safe &" > /tmp/config \ && echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config \ && echo "mysql -u root -e \"CREATE DATABASE mydb\"" >> /tmp/config \ && bash /tmp/config \ && rm -f /tmp/config 

我会build议使用标准的mysql容器图像或从其dockerfile借用

它使用环境variables来控制数据库名称和pipe理员凭据。