我正在Kubernetes中使用Neo4j。
作为展示,我想用原始数据填充Pod中的Neo4j,我可以使用原始文件来处理,而我在/bin
文件夹中使用原始文件外壳。
因此,基本上,我启动了容器并运行cat bin/initialData.cypher | bin/cypher-shell
。
我已经通过在kubectl exec -it <pod> /bin/bash
bash中运行它来验证了它的有效性。
但是,无论我如何尝试映射到spec.container.command
,它都会失败。
目前,我最好的猜测是
spec:
containers:
command:
- /bin/bash
- -c
- |
cd bin
ls
cat initialData.cypher | cypher-shell
这不起作用。它可以正确显示ls
,但随后会抛出connection refused
,我不知道它从哪里来。
编辑:已更新
答案 0 :(得分:1)
您执行了有效的规范,但语法错误。
尝试这样
spec:
containers:
command: ["/bin/bash"]
args: ["-c","cat import/initialData.cypher | bin/cypher-shell"]
答案 1 :(得分:0)
Exec似乎是处理此问题的更好方法,但通常不会同时使用command和args。在这种情况下,可能只需将整个内容放入命令中即可。
答案 2 :(得分:0)
我发现了我的问题所在。 我没有意识到命令未链接到初始化生命周期,这意味着在容器中启动neo4j之前已执行命令。 基本上,使用命令对我来说是错误的方法。