【问题标题】:How to import an existing MySQL-Database in my MySQL-Docker Container?如何在我的 MySQL-Docker 容器中导入现有的 MySQL-Database?
【发布时间】:2018-06-20 12:32:24
【问题描述】:

我基于来自 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

【问题讨论】:

  • 重要提示:我使用以下命令启动容器: docker run -d --name mysql --rm -p 3306:3306 -v mysql-dump:/docker-entrypoint-initdb.d :ro -v 数据存储:/var/lib/mysql:rw christian/mysql-test:1.0

标签: mysql docker import


【解决方案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

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

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

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 2020-06-04
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多