Wil*_*ill 1 gremlin tinkerpop docker gremlin-server
我正在使用 TinkerPop 的本地实现和 docker imagetinkerpop/gremlin-server:3.4.1 来与 nodeJs 中的图形数据库进行本地交互。
我需要将 IDManager 设置为 ANY,以便它可以接受自定义顶点 ID 的字符串值(目前它仅适用于数字类型)。
我知道我需要设置 TinkerGraph gremlin.tinkergraph.vertexIdManager 的配置,但我不确定如何在我的 docker-compose 文件中使用正确的配置对其进行初始化。 http://tinkerpop.apache.org/docs/current/reference/#_configuration_4
有人知道怎么做吗?
谢谢
当您使用以下命令启动容器时
docker run --rm -p 8182:8182 tinkerpop/gremlin-server
Run Code Online (Sandbox Code Playgroud)
您可以选择传递 YAML 配置文件的路径。看起来像这样:
docker run --rm -p 8182:8182 tinkerpop/gremlin-server conf/gremlin-server.yaml
Run Code Online (Sandbox Code Playgroud)
该文件位于文件夹的容器内opt/gremlin-server/conf。一种选择是docker exec进入正在运行的容器并编辑 YAML 和属性文件,然后从修改后的映像创建一个新映像。您还可以用来docker cp替换这些文件。虽然这可行,但缺点是每次拉取更新版本的 Gremlin Server 映像时都必须执行此操作。
您可以尝试将本地文件系统卷挂载为docker包含 YAML 文件的命令的一部分,该文件指向您自己的属性文件,您可以在其中添加 ID 管理器行:
gremlin.tinkergraph.vertexIdManager=ANY
gremlin.tinkergraph.edgeIdManager=ANY
Run Code Online (Sandbox Code Playgroud)
该docker命令将是这样的:
docker run --rm -p 8182:8182 -v $(pwd):/opt/gremlin-server/conf tinkerpop/gremlin-server conf/myfile.yaml
Run Code Online (Sandbox Code Playgroud)
但是,这可能不起作用,因为 Gremlin 服务器启动脚本运行的sed命令会创建 YAML 文件的修改版本,并且需要对本地磁盘的写入权限(这可以按如下所述解决)。附带说明一下,这样做是为了解决 IP 地址问题。文件权限和用户权限需要确保该sed命令能够运行。
要解决docker现在需要能够编辑本地磁盘(而不是容器自己的临时存储)上的文件的问题,至少在 Linux 系统上,您可以尝试使用--user如下所示的参数。
docker run --rm -p 8182:8182 --user $(id -u):$(id -g) -v $(pwd):/opt/gremlin-server/conf tinkerpop/gremlin-server conf/myfile.yaml
Run Code Online (Sandbox Code Playgroud)
请注意,为了使其正常工作,Gremlin Server 希望在其引导过程中从该文件夹读取的任何文件conf现在都需要存在于本地磁盘上,因为我们已经重新映射了该conf文件夹的位置。启动期间读取的文件包括log4j-server.propertiesYAML 文件引用的文件以及任何脚本和属性文件。您可以从容器本身(通过docker exec或docker cp)或 Apache TinkerPop Github 存储库复制这些文件。
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |