Jag stötte på samma problem den här veckan. Jag har hittat en fungerande lösning utan behov av --volumes-from
Problemet som redan har nämnts är att /var/lib/mysql
är en volym, och eftersom Docker inte kommer att stödja UNVOLUME
i sin Dockerfile inom en snar framtid kan du inte använda den här platsen för din databaslagring om du vill börja med en tom databas som standard. (https://github.com/docker/docker/issues/18287
). Det är därför jag skriver över etc/mysqld.my.cnf
, vilket ger mysql en ny datadir.
Tillsammans med pwes svar kan du skapa en Dockerile så här:
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 enda ändringen finns i my.cnf
är platsen för datakatalogen:
....
[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
....