sql >> Database teknologi >  >> RDS >> Mysql

Sådan opretter du befolket MySQL Docker Image på byggetid

Jeg løb ind i det samme problem i denne uge. Jeg har fundet en fungerende løsning uden behov for --volumes-from

Problemet, der allerede er nævnt, er at /var/lib/mysql er en volumen, og da Docker ikke kommer til at understøtte UNVOLUME i dens Dockerfile i den nærmeste fremtid, kan du ikke bruge denne placering til din databaselagring, hvis du vil starte med en tom database som standard. (https://github.com/docker/docker/issues/18287 ). Det er derfor, jeg overskriver etc/mysqld.my.cnf , giver mysql en ny datadir.

Sammen med pwes' hans svar kan du oprette en Dockerile som denne:

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

Den eneste ændring er i my.cnf er placeringen af ​​datadirigent:

.... 
[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. hvordan sorteres rækkefølgen af ​​LEFT JOIN i SQL-forespørgsel?

  2. 7 måder at returnere duplikerede rækker, der har en primær nøgle i MariaDB

  3. Undslipper enkelt citat i PHP ved indsættelse i MySQL

  4. Hellere ALTER end DROP