ban*_*joe 5 mysql import docker
我基于 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
Run Code Online (Sandbox Code Playgroud)
有多种导入方法。如果您的容器正在运行,则使用 docker exec:
解决方案一:
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>
Run Code Online (Sandbox Code Playgroud)
解决方案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 Code Online (Sandbox Code Playgroud)
并使用 Run 命令添加到您的 DockerFile:
ADD create_db.sh /tmp/create_db.sh
RUN /tmp/create_db.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6003 次 |
| 最近记录: |