我过去常常单独运行Neo4j,然后我的应用程序会根据需要与它交互。现在我正在使用docker-compose
来运行Neo4j
。
这是我在docker文件中的neo4j
部分。
neo4j:
container_name: neo4j_container
restart: always
image: neo4j:3.5.3
network_mode: "bridge"
ports:
- "7474:7474"
- "6477:6477"
- "7687:7687"
- "7473:7473"
environment:
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
- NEO4J_apoc_import_file_enabled=true
- NEO4J_dbms_shell_enabled=true
- NEO4J_dbms_connector_http_listen__address=:7474
- NEO4J_dbms_connector_https_listen__address=:6477
- NEO4J_dbms_connector_bolt_listen__address=:7687
volumes:
- /usr/local/abc/temp:/var/lib/neo4j/import
正如您所看到的,我使用的Neo4j
图像是neo4j:3.5.3
。
当我尝试在docker-compose up
之后从localhost:7474
访问neo4j
时,它工作得很好。
但是,当我尝试通过我的应用程序访问它时,它给出了以下错误
Unable to connect to localhost:7687, ensure the database is running and that there is a working network connection to it.<br>
我试着从这个问题中寻求帮助,但即使是that也没有帮助。
下面是docker-compose ps
的输出:
如果我遗漏了什么,请告诉我。
发布于 2019-06-24 12:10:33
您应该在应用程序中使用machine-ip:7687
来连接到neo4j
。
在您的示例中,neo4j
运行在bridge网络模式下,容器网络与主机网络不同。因此,为了从外部世界访问在此类容器内运行应用程序,您必须使用docker-compose中的ports:
字段执行port mapping。
现在,我猜正在尝试访问neo4j
的应用程序也在bridge
网络模式下运行。因此,在应用程序中放置localhost:7687
将指向容器localhost
,但是您希望连接到neo4j
容器端口7687,我们已经使用ports
选项将该端口映射到主机网络。在这种情况下,可以使用machine-ip:7687
从外部世界访问您的neo4j
端口7687。
希望这能有所帮助。
https://stackoverflow.com/questions/56725739
复制相似问题