Jeg løb ind i det samme problem i denne uge. Jeg har fundet en fungerende løsning uden behov for --volumes-from
Problemet, der allerede er nævnt, er at /var/lib/mysql
er en volumen, og da Docker ikke kommer til at understøtte UNVOLUME
i dens Dockerfile i den nærmeste fremtid, kan du ikke bruge denne placering til din databaselagring, hvis du vil starte med en tom database som standard. (https://github.com/docker/docker/issues/18287
). Det er derfor, jeg overskriver etc/mysqld.my.cnf
, giver mysql en ny datadir.
Sammen med pwes' hans svar kan du oprette en Dockerile som denne:
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
Den eneste ændring er i my.cnf
er placeringen af datadirigent:
....
[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
....