Saya mengalami masalah yang sama minggu ini. Saya telah menemukan solusi yang berfungsi tanpa perlu --volumes-from
Masalah yang sudah disebutkan adalah bahwa /var/lib/mysql
adalah volume, dan karena Docker tidak akan mendukung UNVOLUME
di Dockerfile-nya dalam waktu dekat, Anda tidak dapat menggunakan lokasi ini untuk penyimpanan database Anda jika Anda ingin memulai dengan database kosong secara default. (https://github.com/docker/docker/issues/18287
). Itu sebabnya saya menimpa etc/mysqld.my.cnf
, memberikan mysql sebuah datadir baru.
Bersama dengan pwes' jawabannya, Anda dapat membuat Dockerile seperti ini:
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
Satu-satunya perubahan yang ada di my.cnf
adalah lokasi direktori data:
....
[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
....