Ho riscontrato lo stesso problema questa settimana. Ho trovato una soluzione funzionante senza la necessità di --volumes-from
Il problema già affermato è che /var/lib/mysql
è un volume e poiché Docker non supporterà UNVOLUME
nel suo Dockerfile nel prossimo futuro, non è possibile utilizzare questa posizione per l'archiviazione del database se si desidera iniziare con un database vuoto per impostazione predefinita. (https://github.com/docker/docker/issues/18287
). Ecco perché sovrascrivo etc/mysqld.my.cnf
, dando a mysql una nuova datadir.
Insieme alla sua risposta di pwe, puoi creare un Dockerile come questo:
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
L'unico cambiamento è in my.cnf
è la posizione della directory dei dati:
....
[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
....