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

时间:2016-11-24 17:34:31

标签: wordpress docker 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站点,空的数据库设置。我想要的是,我有一个db转储文件my_db.sql,我想在初始化时加载到mariadb。我怎样才能做到这一点?我需要在哪里将my_db.sql文件放入mariadb容器中选择?

2 个答案:

答案 0 :(得分:1)

您有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. docker-compose文件中使用build指令,并指向包含以下内容的dockerfile

    FROM mysql
    COPY my_db.sql /docker-entrypoint-initdb.d
    
  3. 创建一个虚容器,挂载/my/own/datadir:/var/lib/mysql,然后使用docker exec手动恢复数据库,然后您可以在容器中想要该数据库时使用主机目录。

答案 1 :(得分:0)

将包含sql文件的文件夹挂载到数据库定义的success部分中的容器上的/docker-entrypoint-initdb.d。任何volumes(和.sql)文件都将自动运行。

有关详细信息,请参阅docs.sql.gz部分。