使用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理员凭据。