I am studying docker these days and start by creating a mysql image myself.
Dockerfile:
FROM centos
MAINTAINER Michael
ENV REFRESHED_AT 2016-07-29
RUN yum install -y mysql mariadb-server
VOLUME /var/lib/mysql
ENTRYPOINT ["/usr/libexec/mysqld", "--user=root"]
EXPOSE 3306
docker launch command
docker run -d --name mysql -v /root/docker/mysql/data:/var/lib/mysql -p 3306:3306 michael/mysql
This gave an error because I need to execute exec mysql_install_dbfirst to initialize the DB. But I could not add RUN mysql_install_dba Docker to the file, since I want to use it Volumeas an external data store.
So how do I do this?
I know there is an official image with a name mysql. I just want to do it as a practice.
UPDATE: Thanks @Pieter. I finally did this using his solution, which provides another that entrypoint.shcombines init and start scripts, and then makes it as ENTRYPOINT in the Docker file:
FROM centos
MAINTAINER Michael
ENV REFRESHED_AT 2016-07-29
RUN yum install -y mysql mariadb-server
VOLUME /var/lib/mysql
COPY entrypoint.sh /usr/local/bin/
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3306
entrypoint.sh
#!/bin/bash
if [ ! -d "/var/lib/mysql/mysql" ]; then
echo 'Initializing database'
mysql_install_db
echo 'Database initialized'
fi
/usr/libexec/mysqld --user=root
docker run
docker run -d --name mysql -v /root/docker/mysql/data:/var/lib/mysql -p 3306:3306 michael/mysql
.