GNU/Linux >> Tutoriels Linux >  >> Linux

Valider les données dans un conteneur mysql

Sur la base de la recherche @dekin, j'ai fait ceci pour résoudre le problème :

Fichier Docker :

FROM mysql:latest

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

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

Créer et exécuter :

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

Basé sur la réponse de @Robert, je me suis retrouvé avec ce Dockerfile :

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

Le CMD le remplacement n'a pas fonctionné pour moi, le conteneur s'est arrêté avec une erreur étrange :

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.

Je suppose que l'original CMD command faisait plus de choses qui manquent maintenant (dans la réponse @Robert) donc je l'ai fait dans une approche différente. Je ne l'ai pas essayé avec latest version mais je pense que ça devrait marcher.


Si vous utilisez docker-compose , il n'est pas nécessaire de créer une image personnalisée. Ajoutez simplement le drapeau --datadir=/var/lib/mysql-no-volume à votre commande en tirant le mysql photo.

Exemple :

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"

L'image mysql officielle stocke les données dans un volume. Normalement, cela est souhaité pour que vos données puissent persister au-delà de la durée de vie de votre conteneur, mais les volumes de données contournent le système de fichiers Union et ne sont pas validés dans l'image.

Vous pouvez accomplir ce que vous essayez de faire en créant votre propre image de base mysql sans volumes. Vous pourrez alors ajouter des données et les valider dans une image, mais toutes les données ajoutées à un conteneur en cours d'exécution après la validation seront perdues lorsque le conteneur disparaîtra.


Linux
  1. Comment exécuter MySQL dans un conteneur Docker

  2. Comment créer une image personnalisée à partir d'un conteneur Docker

  3. Que contient une image/un conteneur Docker ?

  4. améliorer la vitesse d'importation mysql

  5. Impossible de sortir les données MySQL dans le fichier

Types de données MySQL

Comment stocker les données du conteneur Docker dans les volumes Docker

PHP MySQL Sélectionner les données

Nouvelle fonctionnalité de conteneur :montures superposées volatiles

Comment installer l'image AlmaLinux 8 dans le conteneur Docker

Comment utiliser Docker Commit pour modifier les images de conteneur