sql >> Databáze >  >> RDS >> Mysql

Jak vytvořit naplněný MySQL Docker Image v době sestavení

Tento týden jsem narazil na stejný problém. Našel jsem funkční řešení bez potřeby --volumes-from

Problém, který již byl zmíněn, je, že /var/lib/mysql je svazek a protože Docker nebude podporovat UNVOLUME v blízké budoucnosti v Dockerfile nemůžete toto umístění použít pro úložiště databáze, pokud chcete začít s prázdnou databází ve výchozím nastavení. (https://github.com/docker/docker/issues/18287 ). Proto přepisuji etc/mysqld.my.cnf , což dává mysql nový datový adresář.

Společně s pwesovou odpovědí můžete vytvořit Dockerile takto:

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

Jediná změna je v my.cnf je umístění 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
....


  1. PHP- vkládání binárních dat do mysql pomocí připravených příkazů

  2. MySQL Change Collation of All Tables

  3. Nastavení časového limitu připojení s PDO

  4. Jak zobrazit historii dotazů v SQL Server Management Studio