MySQL Setup using Docker
Below is my simple docker file that pulls from the existing dockerfile/mysql
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"
It seems to run, but when I connect to the DB (using the IP I received from the
boot2docker ip command), the database doesnt’ exist.
Anyone have any ideas?
Note: I had originally tried to run all three of those commands in separate RUN statements, but that didn’t work. Explanation of why here.
2 Solutions collect form web for “MySQL Setup using Docker”
You should take example on the dockerfile/mysql Dockerfile which has the following
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
In your case you would put in your 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
I would advise either using the standard mysql container image or borrow from its dockerfile
It uses environment variables to control the database name and admin credentials.