Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да създадете попълнено MySQL Docker изображение по време на изграждане

Тази седмица се сблъсках със същия проблем. Намерих работещо решение без нужда от --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
....


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите дублиращи се записи в MySQL

  2. Искам легитимен пример за извикване на съхранена процедура C#:MYSQL

  3. Изчисляване на размера на InnoDB буферния пул за вашия MySQL сървър

  4. Как да се свържете с MySQL от командния ред

  5. Как да извлечем резултат от MySQL ред с множество колони със същото име с PHP?