MySQL Setup using Docker

I’m trying to create a setup where when I do a “docker run” off a Dockerfile that I’ve created, docker will install and setup mysql, and then create a database for me to use.

Below is my simple docker file that pulls from the existing dockerfile/mysql

  • How to debug seg fault in docker container?
  • Docker volume option create folder as “root” user
  • Docker Container with Apache Spark in standalone cluster mode
  • Concurrent access to docker.sock on k8s
  • How to list docker images in insecure-registry
  • Changing Locale in Docker Stops Many Commands From Executing?
  • 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.

  • Can't connect to Postgres docker container from Golang container
  • Building a new docker image with the same name as an existing ones
  • Docker API - how do I join a network?
  • Redirect application logs to docker logs
  • Deploy my application to cluster of multiple vms using orchestration tools
  • How to use redirects in Docker
  • 2 Solutions collect form web for “MySQL Setup using Docker”

    You should take example on the dockerfile/mysql Dockerfile which has the following RUN statement:

    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.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.