我有像这样的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容器中选择?
答案 0 :(得分:1)
您有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
在docker-compose
文件中使用build指令,并指向包含以下内容的dockerfile
:
FROM mysql
COPY my_db.sql /docker-entrypoint-initdb.d
创建一个虚容器,挂载/my/own/datadir:/var/lib/mysql
,然后使用docker exec
手动恢复数据库,然后您可以在容器中想要该数据库时使用主机目录。
答案 1 :(得分:0)
将包含sql文件的文件夹挂载到数据库定义的success
部分中的容器上的/docker-entrypoint-initdb.d
。任何volumes
(和.sql
)文件都将自动运行。
有关详细信息,请参阅docs的.sql.gz
部分。