我使用以下命令启动了CockroachDB容器:

docker run -d --name=node1 --hostname=node1 \
--network=db -p 26257:26257 -p 8080:8080 \
-v "${PWD}/sql:/cockroach/sql" \
-v "${PWD}/cockroach-data/node1:/cockroach/cockroach-data" \
cockroachdb/cockroach:v2.0.1 start --insecure
/sql目录具有init.sql,这是我希望数据库运行的SQL脚本,这是我要运行的命令:
docker exec node1 \
"/cockroach/cockroach sql --insecure < /cockroach/sql/init.sql"

这是我得到的错误:
OCI runtime exec failed: exec failed: container_linux.go:348:
starting container process caused
"exec: \"/cockroach/cockroach sql --insecure < /cockroach/sql/init.sql\":
stat /cockroach/cockroach sql --insecure < /cockroach/sql/init.sql:
no such file or directory": unknown

但是,如果我docker exec -ti node1 /bin/bash并手动运行相同的命令,则它可以工作。

如何从容器外部运行cockroach sql --insecure < [my SQL script]

最佳答案

根据exec documentation:



你应该试试:

docker exec -ti node1 \
sh -c "/cockroach/cockroach sql --insecure < /cockroach/sql/init.sql"

08-28 11:31