Тази седмица се сблъсках със същия проблем. Намерих работещо решение без нужда от --volumes-from
Проблемът, който вече беше посочен, е, че /var/lib/mysql
е том и тъй като Docker няма да поддържа UNVOLUME
в Dockerfile в близко бъдеще, не можете да използвате това място за съхранение на вашата база данни, ако искате да започнете с празна база данни по подразбиране. (https://github.com/docker/docker/issues/18287
). Ето защо презаписвам etc/mysqld.my.cnf
, давайки на mysql нов datadir.
Заедно с неговия отговор на pwes, можете да създадете Dockerile по следния начин:
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
Единствената промяна е в my.cnf
е местоположението на 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
....