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

Les scripts MySQL dans docker-entrypoint-initdb ne sont pas exécutés

Vous devez effacer data_volume avant d'exécuter le conteneur et les fichiers sql seront exécutés. Ce volume data_volume peut être supprimé en utilisant la commande :docker volume rm data_volume .

La cause première de votre problème peut être trouvée dans docker-entrypoint.sh . Lorsque vous exécutez un conteneur mysql, il vérifie le répertoire mysql /var/lib/mysql existent ou non. Si le répertoire n'existe pas (exécutez-le la première fois), il exécutera vos fichiers SQL.

    if [ ! -d "$DATADIR/mysql" ]; then
        //Some other logic here

        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 ;;
                *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysql[@]}"; echo ;;
                *)        echo "$0: ignoring $f" ;;
            esac
            echo
        done 

Vous pouvez obtenir plus de détails sur Source Dockerfile