Bash/Docker exec:从容器内部重定向文件

Jon*_*las 29 bash docker

我无法弄清楚如何从Docker容器中读取文件的内容.我想将SQL文件的内容执行到我的PGSQL容器中.我试过了:

docker exec -it app_pgsql psql --host=127.0.0.1 --username=foo foo < /usr/src/app/migrations/*.sql
Run Code Online (Sandbox Code Playgroud)

我的应用程序已安装/usr/src/app.但是我收到了一个错误:

bash:/usr/src/app/migrations/*.sql:没有这样的文件或目录

似乎Bash将此路径解释为主机路径,而不是客户路径.实际上,两次执行命令非常有效:

docker exec -it app_pgsql
psql --host=127.0.0.1 --username=foo foo < /usr/src/app/migrations/*.sql
Run Code Online (Sandbox Code Playgroud)

我认为这更像是Bash问题而不是Docker问题,但我仍然被卡住了!:)

Von*_*onC 37

尝试并使用shell来执行该命令

sh -c 'psql --host=127.0.0.1 --username=foo foo < /usr/src/app/migrations/*.sql'
Run Code Online (Sandbox Code Playgroud)

完整的命令是:

docker exec -it app_pgsql sh -c 'psql --host=127.0.0.1 --username=foo foo < /usr/src/app/migrations/*.sql'
Run Code Online (Sandbox Code Playgroud)


use*_*097 14

尝试 sh -c "your long command"