在Docker容器上执行SQL脚本

我有一个docker运行的MySQL容器,我想推一个.sql文件的容器,然后让MySQL执行它的命令。 第一步相当简单:

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

从那里我试图从命令行运行mysql,并将其指向我刚推入容器的文件。

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

这个命令似乎试图在本地使用/sample.sql作为标准input,而不是在容器上。 我也尝试包装容器ID后,似乎也无法正常工作的报价。

我也尝试推入一个.sh文件,将其中的命令传递给docker容器,然后执行该文件,但这不太理想,也无法正常工作。 有什么build议?

如果你要在你的命令中做pipe道redirect,把它作为string传递给/bin/sh

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

尝试:

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