Ik liep deze week tegen hetzelfde probleem aan. Ik heb een werkende oplossing gevonden zonder --volumes-from
Het probleem dat al is gesteld, is dat /var/lib/mysql
is een volume, en aangezien Docker UNVOLUME
niet gaat ondersteunen in zijn Dockerfile in de nabije toekomst, kunt u deze locatie niet gebruiken voor uw databaseopslag als u standaard met een lege database wilt beginnen. (https://github.com/docker/docker/issues/18287
). Daarom overschrijf ik etc/mysqld.my.cnf
, waardoor mysql een nieuwe datadir krijgt.
Samen met het antwoord van pwes, kun je een Dockerile als volgt maken:
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
De enige wijziging die er is in my.cnf
is de locatie van de 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
....