Docker Compose启动Neo4j执行cypher-shell提示文件不存在问题求助
问题分析与解决
你的错误并非目录挂载问题,而是**command字段的格式错误**:
当Docker Compose中用数组形式定义command时,必须将命令和每个参数拆分为单独的数组元素。你当前把整个命令行作为单个元素,Docker会尝试寻找名为cypher-shell -u neo4j -p test123! --file /var/lib/neo4j/scripts/constraints.cypher的可执行文件,这显然不存在,因此触发报错。
修正方案
方案1:数组形式拆分参数
修改docker-compose.yml中的command部分为:
command: - cypher-shell - -u - neo4j - -p - test123! - --file - /var/lib/neo4j/scripts/constraints.cypher
方案2:字符串形式直接写完整命令
也可以改用字符串格式定义命令,无需拆分参数:
command: "cypher-shell -u neo4j -p test123! --file /var/lib/neo4j/scripts/constraints.cypher"
验证挂载(可选)
如果仍怀疑目录挂载问题,可先临时启动容器进入交互模式检查:
docker-compose run app-config-db bash
进入容器后执行以下命令确认文件是否存在:
ls /var/lib/neo4j/scripts/
内容的提问来源于stack exchange,提问作者Miha Šušteršič
相关产品推荐
相关产品推荐

