Neo4j + Docker - 无法创建JVM

4
我正在尝试为Neo4j DB构建一个Docker容器。在本地运行数据库没有问题,但是容器启动JVM时出现了问题。我查看了正在构建自己的Dockerfile的neo4j:3.2.2镜像,似乎我们没有使用不同版本的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.

有人遇到类似的问题吗?我已经搜索了好几篇stackoverflow文章,也试图阅读JVM和容器的工作原理,但是我找不到任何实质性的信息来帮助我解决这个问题。


不,我刚刚尝试了一下,没有任何问题。可能是你的配置文件出了点问题。 - Ayushya
奇怪的是,我和我的同事正在使用相同的配置文件。 - Iltharion
你检查过行尾和隐藏字符了吗(换行符等)?因为我认为“未识别的VM选项”错误消息通常被包含在'中。第二个'缺失。 - VladoDemcak
我遇到了相同的问题。如果有已知的解决方案,我也很希望能听到。我也是在 Windows 10 上运行,使用的是 neo4j:3.2.2 镜像,昨天还能正常工作。最近我的电脑上推送了一次更新,但不确定更新包括了什么。 - youngaj
3个回答

8
我也遇到了同样的问题。事实证明,这是neo4j.conf文件中的行结尾问题。我使用VS Code将行结尾切换为“LF”,然后运行docker-compose up,一切正常。希望这可以帮到你。 Visual Studio Code:如何显示行结尾

1

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

我希望这能帮助其他人。


1

必须停止docker-machine,进入配置文件,在notepadd ++中使用转换为UTF8(即使它已经是utf8),将eof编辑为unix,保存,启动docker-machine,docker-compose up yey就可以工作了。


1
疯了。从“编辑”菜单中选择“EOL 转换” -> “UNIX (LF)” -> 保存。 - Steven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接