【问题标题】:Neo4j + Docker - unable to create JVMNeo4j + Docker - 无法创建 JVM
【发布时间】:2017-07-20 08:44:59
【问题描述】:

我正在尝试为 Neo4j 数据库构建一个 docker 容器。虽然在本地运行 db 不是问题,但容器在启动 JVM 时遇到问题。查看 neo4j:3.2.2 映像,我正在构建自己的 Dockerfile,但看不到我们使用不同版本的 JRE。这个问题似乎源于他们的 neo4j.conf,它在无法识别的 VM 选项标志上崩溃,例如 UseG1GCOmitStackTraceInFastThrow

Dockerfile 相当短

FROM neo4j:3.2.2
ADD ./neo4j.conf /var/lib/neo4j/conf/.
ADD ./data/. /var/lib/neo4j/import
ADD ./scripts/. .

我还有一个 docker-compose.yml

version: '2'
 services:
  neo4j:
    image: eu.gcr.io/tine-matsans-v2/neo4j:develop
    container_name: neo4j
    build:
      context: ./neo4j/.
    ports:
      - "7474:7474"
      - "7473:7473"
      - "7687:7687"
    environment:
      - NEO4J_USERNAME=neo4j
      - NEO4J_PASSWORD=litago

我在 Windows 10 机器上,但该映像构建了一个 unix 容器。我的同事使用相同的配置运行容器没有任何问题,尽管他使用的是 Mac。这不应该是相关的,因为问题在容器内。

neo4j            | Active database: graph.db
neo4j            | Directories in use:
neo4j            |   home:         /var/lib/neo4j
neo4j            |   config:       /var/lib/neo4j/conf     
neo4j            |   logs:         /var/lib/neo4j/logs
neo4j            |   plugins:      /var/lib/neo4j/plugins
neo4j            |   import:       /var/lib/neo4j/import
neo4j            |   data:         /var/lib/neo4j/data
neo4j            |   certificates: /var/lib/neo4j/certificates
neo4j            |   run:          /var/lib/neo4j/run
neo4j            | Starting Neo4j.
neo4j            | Unrecognized VM option 'UseG1GC
neo4j            | Did you mean '(+/-)UseG1GC'?
neo4j            | Error: Could not create the Java Virtual Machine.
neo4j            | Error: A fatal exception has occurred. Program will exit.

有没有人遇到过类似的问题?我搜索了几篇堆栈溢出帖子,并试图了解 JVM 和容器的工作原理,但我找不到任何可靠的信息来帮助我解决这个问题。

【问题讨论】:

  • 不,我刚才试过了,没有问题。可能你的 conf 文件有问题。
  • 奇怪的是,我和我的同事使用的是同一个 conf 文件。
  • 您是否检查了 EOL 和隐藏字符(断线...)?因为我认为“无法识别的 VM 选项”错误消息通常包含在 ' 中。第二个' 不见了
  • 我刚刚遇到了同样的问题。如果有一个已知的解决方案,我也会很感激听到它。我也在使用昨天工作的 neo4j:3.2.2 映像在 Windows 10 上运行。这是最近推送到我的机器上的更新,但不确定其中包括什么。

标签: docker neo4j jvm docker-compose dockerfile


【解决方案1】:

我遇到了同样的问题。原来是 neo4j.conf 文件的行尾。我使用 VS 代码将行尾切换为 'LF' 并运行 docker-compose up,一切顺利。希望这会有所帮助。

Visual Studio Code: How to show line endings

【讨论】:

    【解决方案2】:

    必须停止 docker-machine,转到 conf 文件,使用 notepadd++ 将文件转换为 UTF8,即使它已经是 utf8,编辑 eof 到 unix,保存,docker-machine 启动,docker-compose up yy 工作

    【讨论】:

    • 疯了。从“编辑”菜单中,选择“EOL 转换”->“UNIX (LF)”-> 保存
    【解决方案3】:

    我用 Sublime 轻松解决了这个问题。您可以在菜单 -> 视图 -> 行尾处检查当前行尾。只需将其转换为 Unix 并保存即可。

    我希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多