我有一个运行mysql的docker容器,我想将.sql文件推送到容器,然后让mysql执行其中的命令.第一步非常简单:
docker cp ./dummy.sql <container_id>:/
Run Code Online (Sandbox Code Playgroud)
从那里我试图从命令行运行mysql并将其指向我刚刚推送到容器的文件.
docker exec <container_id> mysql -u root -ppassword < /dummy.sql
Run Code Online (Sandbox Code Playgroud)
此命令似乎试图在本地而不是在容器上使用/sample.sql作为stdin.我还尝试在容器ID之后包装所有内容的引号,这似乎也不起作用.
我也尝试将带有命令的.sh文件推送到docker容器,然后执行它,但这不太理想,也无法正常工作.有什么建议?
Tho*_*eil 11
如果要在命令中执行管道重定向,请将其作为字符串传递给/bin/sh
:
docker exec <container_id> /bin/sh -c 'mysql -u root -ppassword </dummy.sql'
Run Code Online (Sandbox Code Playgroud)
不需要先复制脚本。在努力运行自己的脚本后,我设法使用以下命令在linux上执行该脚本:
docker exec -it <container_name> mysql -u root -ppassword -e "Use mydb; $(cat /path/to/script.sql)"
或者,如果脚本中包含Use db指令:
docker exec -it <container_name> mysql -u root -ppassword -e "$(cat /path/to/script.sql)"
归档时间: |
|
查看次数: |
14687 次 |
最近记录: |