Executing SQL scripts on docker container

I have a docker container running mysql and I want to push a .sql file to the container and then have mysql execute the commands in it. The first step is fairly straightforward:

docker cp ./dummy.sql <container_id>:/

From there I am trying to run mysql from the command line and point it to the file that I just pushed to the container.

docker exec <container_id> mysql -u root -ppassword < /dummy.sql

This command appears to be trying to use /sample.sql as stdin locally rather than on the container. I also tried wrapping quotes around everything after the container ID which also seems to not work.

I also tried pushing a .sh file with the command in it to the docker container and then just executing that, but that is less ideal and also not working. Any advice?

Answer

If you are going to do pipe redirections in your command, pass it as a string to /bin/sh:

docker exec <container_id> /bin/sh -c 'mysql -u root -ppassword </dummy.sql'

Leave a Reply

Your email address will not be published. Required fields are marked *