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

时间:2018-06-20 12:32:25

标签: mysql docker import

我已经基于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

1 个答案:

答案 0 :(得分:1)

有几种导入方法。如果您的竞争器正在运行,请使用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

并使用“运行”命令添加到您的DockerFile中:

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