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