如何在开始时将我的数据库转储导入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个选项:
-
将
.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
-
在你的
dockerfile
docker-compose
文件中使用build指令,并指向一个dockerfile
文件,内容如下:FROM mysql COPY my_db.sql /docker-entrypoint-initdb.d
-
创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
部分。