Passei pelo mesmo problema esta semana. Encontrei uma solução funcional sem a necessidade de
--volumes-from
O problema que já foi declarado é que
/var/lib/mysql
é um volume e, como o Docker não suportará UNVOLUME
em seu Dockerfile em um futuro próximo, você não poderá usar esse local para o armazenamento do banco de dados se quiser começar com um banco de dados vazio por padrão. (https://github.com/docker/docker/issues/18287
). É por isso que sobrescrevo etc/mysqld.my.cnf
, dando ao mysql um novo datadir. Juntamente com a resposta de pwes, você pode criar um Dockerile assim:
FROM mysql:5.6
ENV MYSQL_DATABASE db
ENV MYSQL_ROOT_PASSWORD pass
COPY db.sql /docker-entrypoint-initdb.d/db.sql
COPY my.cnf /etc/mysql/my.cnf
RUN /entrypoint.sh mysqld & sleep 30 && killall mysqld
RUN rm /docker-entrypoint-initdb.d/db.sql
A única mudança que existe está em
my.cnf
é a localização do datadir:....
[mysqld]
skip-host-cache
skip-name-resolve
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql2 <-- can be anything except /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp
....