GNU/Linux >> Belajar Linux >  >> Linux

Komit data dalam wadah mysql

Berdasarkan penelitian @dekin, saya melakukan ini untuk menyelesaikan masalah:

Dockerfile:

FROM mysql:latest

RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume

CMD ["--datadir", "/var/lib/mysql-no-volume"]

Bangun &jalankan:

docker build . -t my-mysql
docker run -e MYSQL_ROOT_PASSWORD=root -it my-mysql

Berdasarkan jawaban @Robert, saya mendapatkan Dockerfile ini :

FROM mysql:5.6.22

RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume

RUN sed -i -e "s|/var/lib/mysql|/var/lib/mysql-no-volume|" /etc/mysql/my.cnf

CMD override tidak bekerja untuk saya, penampung berhenti dengan kesalahan aneh:

2019-02-21 15:18:50 1 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
2019-02-21 15:18:50 1 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

Saya kira CMD yang asli perintah sedang melakukan lebih banyak hal yang sekarang hilang (dalam jawaban @Robert) jadi saya melakukannya dengan pendekatan yang berbeda. Saya tidak mencobanya dengan latest versi tapi saya pikir itu harus bekerja.


Jika Anda menggunakan docker-compose , tidak perlu membuat gambar kustom. Cukup tambahkan bendera --datadir=/var/lib/mysql-no-volume ke perintah Anda saat menarik mysql gambar.

Contoh:

version: '2.4'
services:
  mysql:
    image: mysql:5.7
    command: "mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --datadir=/var/lib/mysql-no-volume"

Gambar mysql resmi menyimpan data dalam volume. Biasanya hal ini diinginkan agar data Anda dapat bertahan melebihi masa pakai penampung Anda, tetapi volume data mengabaikan Sistem File Union dan tidak berkomitmen pada image.

Anda dapat mencapai apa yang Anda coba lakukan dengan membuat gambar dasar mysql Anda sendiri tanpa volume. Anda kemudian dapat menambahkan data dan memasukkannya ke gambar, tetapi data apa pun yang ditambahkan ke penampung yang sedang berjalan setelah komit akan hilang saat penampung hilang.


Linux
  1. MySQL – Mengonversi ke Data Per Tabel untuk InnoDB

  2. Mempercepat pembuatan gambar container dengan Buildah

  3. Terraform – Menyebarkan Python Lambda (gambar kontainer)

  1. Ekstrak File Dari Gambar Docker?

  2. Cara melakukan perubahan pada gambar Docker

  3. meningkatkan kecepatan impor mysql

  1. Cara Menjalankan MySQL Dalam Wadah Docker

  2. Cara membuat gambar khusus dari wadah Docker

  3. Apa yang ada di dalam gambar/wadah Docker?