如何将现有的MySQL数据库导入我的MySQL Docker容器中?

5
我已经创建了一个基于Docker Hub官方MySQL镜像的docker容器。它可以正常运行,但我在导入数据库时遇到了一些问题。
我的SQL指令文件已经存储在/docker-entrypoint-initdb.d文件夹中,但是它不起作用!我已将sql-import.sql复制到/var/lib/docker/volumes/mysql-dump/_data中,但在调用“SHOW DATABASES;”命令时,我只能看到我的数据库名称。当我调用“SHOW TABLES FROM myDB;”命令时,没有表可用。我该如何导入我的MySQL数据库内容?
下面是我的Dockerfile:
FROM mysql:5.7
ADD ./init-scripts/*.sql /docker-entrypoint-initdb.d/
ADD ./config/my.cnf /root/
RUN cd /root/ && \
chmod 0600 my.cnf && \
mv my.cnf .my.cnf

ENV MYSQL_DATABASE=regex
ENV MYSQL_ROOT_PASSWORD=mypassword

EXPOSE 3306

MySQL View in the MySQL-Container


重要提示:我使用以下命令启动容器:docker run -d --name mysql --rm -p 3306:3306 -v mysql-dump:/docker-entrypoint-initdb.d:ro -v datastorage:/var/lib/mysql:rw christian/mysql-test:1.0 - banana-joe
1个回答

3

有几种导入方法。如果您的容器正在运行,则可以使用docker exec命令:

解决方案1:

docker exec -i <id_conteneur> /usr/bin/mysql -u <fooUser> -e "CREATE DATABASE mydb"

cat schema.sql | docker exec -i <id_conteneur> /usr/bin/mysql -u <fooUser> --password=<password> <database>

解决方案2:

在bash脚本中:

#!/bin/bash 
/usr/bin/mysqld_safe --skip-grant-tables &
mysql -u <fooUser> -e "CREATE DATABASE mydb" 
mysql -u <fooUser> mydb < schema.sql

并使用Run命令将其添加到您的DockerFile中:

ADD create_db.sh /tmp/create_db.sh
RUN /tmp/create_db.sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接