我在Windows 10上使用Docker Toolbox。
我可以成功访问php部分,网址为http://192.168.99.100:8000。我一直在处理mariadb部分,但仍然存在若干问题。
我有一个名为
/mariadb/initdb/abc.sql
的sql文件,所以我应该将它复制到/docker-entrypoint-initdb.d
,创建容器后,我使用docker-compose exec mariadb
来访问容器,这个文件会出现在/docker-entrypoint-initdb.d/abc.sql
中,但是该文件从未被执行过。我也尝试手动导入sql文件到容器中,成功了,说明sql文件是有效的。
我不太理解数据文件夹映射,并且不知道如何使文件夹与容器同步,每次使用docker-compose up -d
重新创建容器时,我总是收到以下警告信息:
WARNING: Service "mariadb" is using volume "/var/lib/mysql" from the previous container. Host mapping "/.../mariadb/data" has no effect. Remove the existing containers (with docker-compose rm mariadb) to use the Recreating db ... done
问题:
1. 如何执行/docker-entrypoint-initdb.d
中的sql文件?
2. 映射数据文件夹与mariadb容器的正确方法是什么?
请指导,谢谢。
这是我的docker-compose.yml
文件。version: "3.2"
services:
php:
image: php:7.1-apache
container_name: web
restart: always
volumes:
- /.../php:/var/www/html
ports:
- "8000:80"
mariadb:
image: mariadb:latest
container_name: db
restart: always
environment:
- MYSQL_ROOT_PASSWORD=12345
volumes:
- /.../mariadb/initdb:/docker-entrypoint-initdb.d
- /.../mariadb/data:/var/lib/mysql
ports:
- "3306:3306"