I'm having trouble importing an .sql dump file with docker-compose. I've followed the docs, which apparently will load the .sql file from docker-entrypoint-initdb.d. However, when I run docker-compose up
, the sql file is not copied over to the container.
I've tried stopping the containers with -vf
flag, but that didn't work either. Am I doing something wrong in my .yml script?
I have dump.sql in the directory database/db-dump/ in the root where my compose file is.
frontend:
image: myimage
ports:
- "80:80"
links:
- mysql
mysql:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: dbuser
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: myimage_db
volumes:
- ./database/db-dump:/docker-entrypoint-initdb.d
This worked for me,
mysql-dump must be a directory. All the .sql's in the directory will be imported.
This appears on the documentation page of Docker MySQL image: https://hub.docker.com/_/mysql/
After many attempts with the volumes setting i found a workaround
I created another image based on mysql with the following in the Dockerfile
Then removed the volumes from compose and ran the new image
This way the dump is always copied over and run on startup
Mysql database dump schema.sql is resides in the /mysql-dump/schema.sql diretory and it creates tables during the initialization process.
docker-compose.yml: