私は今週同じ問題に遭遇しました。 --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
....