Mysql
 sql >> Base de données >  >> RDS >> Mysql

Configuration de MySQL et importation de vidage dans Dockerfile

La dernière version de l'image docker mysql officielle permet d'importer des données au démarrage. Voici mon docker-compose.yml

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

Ici, j'ai mon data-dump.sql sous docker/data qui est relatif au dossier à partir duquel docker-compose s'exécute. Je monte ce fichier sql dans ce répertoire /docker-entrypoint-initdb.d sur le conteneur.

Si vous souhaitez voir comment cela fonctionne, jetez un œil à leur docker-entrypoint.sh dans GitHub. Ils ont ajouté ce bloc pour permettre l'importation de données

    echo
    for f in /docker-entrypoint-initdb.d/*; do
        case "$f" in
            *.sh)  echo "$0: running $f"; . "$f" ;;
            *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
            *)     echo "$0: ignoring $f" ;;
        esac
        echo
    done

Une note supplémentaire, si vous souhaitez que les données soient conservées même après l'arrêt et la suppression du conteneur mysql, vous devez disposer d'un conteneur de données distinct, comme vous le voyez dans le docker-compose.yml. Le contenu du conteneur de données Dockerfile est très simple.

FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8

VOLUME /var/lib/mysql

CMD ["true"]

Le conteneur de données n'a même pas besoin d'être à l'état de démarrage pour la persistance.