如何在开始时将我的数据库转储导入mariadb?

我有一个像这样的docker-compose.yml文件

version: '2' services: wordpress: image: wordpress ports: - 8080:80 environment: WORDPRESS_DB_NAME: my_wp WORDPRESS_DB_USER: my_user WORDPRESS_DB_PASSWORD: my_pass volumes: - ./src:/var/www/html mysql: image: mariadb environment: MYSQL_ROOT_PASSWORD: my_pass volumes: - ./db:/etc/mysql 

我可以使用命令docker-compose up运行我的包含器,它工作正常,但显示默认的WordPress的网站与空数据库设置。 我想要的是,我有一个数据库转储文件my_db.sql,我想在初始化时加载到mariadb。 我怎样才能做到这一点? 我需要把我的my_db.sql文件由mariadb容器select在哪里?

你有3个选项:

  1. .sql文件挂载到/docker-entrypoint-initdb.d/

     version: '2' services: wordpress: image: wordpress ports: - 8080:80 environment: WORDPRESS_DB_NAME: my_wp WORDPRESS_DB_USER: my_user WORDPRESS_DB_PASSWORD: my_pass volumes: - ./src:/var/www/html mysql: image: mariadb environment: MYSQL_ROOT_PASSWORD: my_pass volumes: - ./db:/etc/mysql - ./my_db.sql:/docker-entrypoint-initdb.d/my_db.sql 
  2. 在你的dockerfile docker-compose文件中使用build指令,并指向一个dockerfile文件,内容如下:

     FROM mysql COPY my_db.sql /docker-entrypoint-initdb.d 
  3. 创build一个虚拟的容器,Mount /my/own/datadir:/var/lib/mysql ,然后使用docker exec手动恢复数据库,然后在需要该容器的时候使用主机目录。

将数据库的sql文件/docker-entrypoint-initdb.d到数据库定义的volumes部分的容器中的/docker-entrypoint-initdb.d 。 任何.sql (和.sql.gz )文件将自动运行在。

有关更多信息,请参阅Initializing a fresh instance 文档 Initializing a fresh instance部分。