运行EXTENSION_SCRIPT后Neo4J Docker容器未启动

Wyz*_*zzy 5 neo4j docker

我正在使用docker-compose从官方镜像使用以下Dockerfile创建neo4j服务:

FROM neo4j:3.3.4

ADD zz-docker/neo4j/neo4j-init.sh /scripts/

EXPOSE 7474
EXPOSE 7687
Run Code Online (Sandbox Code Playgroud)

和docker-compose.yml

neo4j:
   environment:
     - EXTENSION_SCRIPT=/scripts/neo4j-init.sh
   build:
     context: ../
     dockerfile: zz-docker/neo4j/Dockerfile
   image: zz-neo4j
   container_name: zz-neo4j-01
   ports:
     - 7474:7474
     - 7687:7687
   networks:
     - zz-net
   volumes:
     - ../neo4j-data:/data
     - ../neo4j-logs:/logs

networks:
  zz-net:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

扩展脚本用于在容器启动时预加载数据库转储,基于以下内容:create-neo4j-database-from-backup-inside-neo4j-docker,如下所示:

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

# do not run init script at each container start but only at the first start
if [ ! -f /var/lib/neo4j/data/neo4j-import-done.flag ]; then
    echo "Importing neo4j-init.dump ..."
    /var/lib/neo4j/bin/neo4j-admin load --from=/var/lib/neo4j/data/neo4j-init.dump --database=graph.db --force=true
    touch /var/lib/neo4j/data/neo4j-import-done.flag
    echo "Import complete"
else
    echo "There is no neo4j-init.dump file or the neo4j import has already run."
fi
Run Code Online (Sandbox Code Playgroud)

但是,导入完成后,容器将无法开始报告错误:

/docker-entrypoint.sh: line 218: exec su-exec neo4j: command not found
Run Code Online (Sandbox Code Playgroud)

如果没有定义EXTENSION_SCRIPT,容器将启动而不会出现问题(尽管导入脚本没有运行)。

任何建议深表感谢!