Docker – 在容器中运行一个sql文件
任何尝试都失败了。 我在我的笔记本电脑中有一个很大的sql脚本,我想在我的docker容器中运行它。
我相信我必须先复制它=:
docker cp ./my_cool_script.sql container_mssql_1:/my_cool_script.sql
这似乎运行,并没有给任何成功或失败,所以我认为它可以吗?
我然后尝试:
docker exec container_mssql_1 -u sa psql databasename sa -f /my_cool_script.sql
但我只是得到:
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:262: starting container process caused "exec: \"-u\": executable file not found in $PATH"
任何想法,还是有更好的方法来做到这一点。 该文件是相当大的(30MB)。
https://docs.docker.com/engine/reference/commandline/exec/
docker执行[选项]集装箱命令[ARG …]
-u
选项需要放在容器的名称之前 。
docker exec -u sa container_mssql_1 psql databasename sa -f /my_cool_script.sql
这就是为什么它抱怨“我的path名为-u
没有可执行文件”。 它以为你想运行一个名为-u
的命令。
当使用docker docker exec
你最终在容器中执行一个命令。 docker exec
的语法是
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
用你使用过的命令将“-u”视为COMMAND,它不是可以在$ PATH中find的可执行文件。
我不是mssql或psql的专家,所以我不知道你在psql命令之前用-u sa
来达到什么目的。
如果你看看你的输出结果,你可以看到docker试图运行的可执行文件是-u
,它与你设置用户的尝试相对应,本质上你已经得到了docker
命令参数的错误顺序!
尝试把用户选项直接放在exec
和容器名称之前
docker exec -u sa container_mssql_1 psql databasename sa -f /my_cool_script.sql
您也可能实际上不需要使用-u
选项显式指定用户。