【发布时间】:2018-06-29 15:32:02
【问题描述】:
背景
我之前在 Windows 上安装了 neo4j 和一个 PowerShell 脚本来运行一些迁移。每次都会从这些迁移脚本和导入文件夹中的一些 CSV 重新创建数据库。 .NET WebAPI 与 neo4j db 对话。
目标
我决定将此设置 Docker 化,以便我可以与人们进行跨平台协作,而他们不必直接安装/配置 neo4j。
我已经设置了大部分 neo4j docker 容器——卷、复制的适当文件等,它启动了。
问题
无论如何,我似乎找不到插入或执行将遍历文件夹并执行密码查询的脚本的好方法。我知道这可能必须是一个使用 neo4j CLI 的 bash 脚本,我对此很好,但我找不到实现它的好地方。
我尝试过的
-
EXTENSION_SCRIPT环境变量。这在流程中执行得太早了。 - 使用我自己的
ENTRYPOINT-- 发现这似乎取代了 neo4j 容器的入口点 - 使用我自己的
CMD-- 同样,这似乎取代了 - 从
docker-compose移动到dockerfile并复制neo4j 入口点文件以对其进行修改。这似乎遇到了我正在研究的错误invalid optionn/bash: -的问题,但这是我的第一次尝试。
问题
如何在 Neo4j 启动后运行一个或多个密码查询? neo4j 或 docker 中是否有允许这样做的规定?我无法在文档中找到任何线索。
或者,这真的不是推荐的方式吗?我是否应该通过输入容器并手动运行与 CLI 配合使用的 bash 脚本来按需运行这些迁移?
脚本
Dockerfile:
FROM neo4j:3.3.1
COPY ./data/import/migrations/scripts /scripts
ENV NEO4J_AUTH=none
ENTRYPOINT ["/scripts/docker-neo4j-entrypoint.sh"]
CMD ["neo4j"]
来自docker-compose的相关sn-p:
neo4j:
container_name: 'app-db'
build:
context: .
dockerfile: DOCKERFILE_DB
volumes:
- ./data/CSVs:/import
- ./data/import/migrations:/import/migrations
ports:
- "7687:7687" # bolt protocol
- "7474:7474" # http protocol
- "7473:7473" # https protocol
networks:
- app-network
【问题讨论】:
-
仅供参考我目前正在追求使用我的 API 的入口点为数据库播种的策略。看看结果如何。
标签: bash docker neo4j docker-compose