Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengimport Lambakan Pangkalan Data dengan Cekap ke dalam MySQL dalam Persekitaran Docker?

Bagaimana untuk Mengimport Lambakan Pangkalan Data dengan Cekap ke dalam MySQL dalam Persekitaran Docker?

Barbara Streisand
Barbara Streisandasal
2024-12-11 15:14:12909semak imbas

How to Efficiently Import Database Dumps into MySQL within a Docker Environment?

Menyediakan Pangkalan Data dan Mengimport Dump dalam Dockerfile

Dalam persekitaran Docker, adalah perkara biasa untuk menghadapi kesukaran semasa mengkonfigurasi MySQL dan mengimport lambakan pangkalan data semasa proses membina. Untuk menyelesaikan isu ini, pertimbangkan pendekatan berikut:

Imej MySQL Docker rasmi termasuk ciri yang membolehkan import data pada permulaan. Ini menghapuskan keperluan untuk penciptaan pangkalan data manual dan membuang langkah import dalam Dockerfile. Untuk melaksanakan ini, cipta fail docker-compose.yml yang serupa dengan:

data:
  build: docker/data/.
mysql:
  image: mysql
  ports:
    - "3307:3306"
  environment:
    MYSQL_ROOT_PASSWORD: 1234
  volumes:
    - ./docker/data:/docker-entrypoint-initdb.d
  volumes_from:
    - data

Dalam konfigurasi ini, fail data-dump.sql harus terletak dalam direktori docker/data. Pemetaan volum akan menjadikannya boleh diakses dalam bekas di /docker-entrypoint-initdb.d.

Di sebalik tabir, skrip docker-entrypoint.sh dalam imej MySQL Docker termasuk blok kod yang melaksanakan SQL secara automatik fail yang ditemui dalam /docker-entrypoint-initdb.d:

    for f in /docker-entrypoint-initdb.d/*; do
        case "$f" in
            *.sh)  echo "<pre class="brush:php;toolbar:false">FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8

VOLUME /var/lib/mysql

CMD ["true"]
: running $f"; . "$f" ;; *.sql) echo ": running $f"; "${mysql[@]}" < "$f" && echo ;; *) echo ": ignoring $f" ;; esac echo done

Ini memastikan bahawa fail data-dump.sql dilaksanakan semasa permulaan kontena.

Untuk mengekalkan kegigihan data merentas permulaan semula dan pengalihan keluar kontena, adalah disyorkan untuk membuat bekas data yang berasingan. Fail Docker untuk bekas sedemikian boleh semudah:

Arahan CMD ["true"] digunakan untuk menghalang bekas daripada keluar. Bekas data tidak perlu berada dalam keadaan mula untuk memastikan data kekal.

Atas ialah kandungan terperinci Bagaimana untuk Mengimport Lambakan Pangkalan Data dengan Cekap ke dalam MySQL dalam Persekitaran Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn