Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara membuat Gambar Docker MySQL yang terisi pada waktu pembuatan

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
....


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu SQL? Apa itu Basis Data? Sistem Manajemen Basis Data Relasional (RDBMS) Dijelaskan dalam Bahasa Inggris Biasa.

  2. Apakah ada cara sederhana untuk mengubah data MySQL menjadi Judul Kasus?

  3. MySQL:Bandingkan perbedaan antara dua tabel

  4. Nama Tabel Huruf Kecil MySQL di Windows Nama huruf besar di Unix

  5. MySQL LAST_INSERT_ID() digunakan dengan beberapa catatan pernyataan INSERT