我在Traefik后面的Docker中运行Neo4J。web界面(7474)显示在https上,其工作方式与预期一致。
通过web界面,我尝试连接到bolt://localhost:7687,我希望它能工作,毕竟它是在同一个容器中运行的。相反,我收到的消息是:
ServiceUnavailable: WebSocket连接失败。由于web浏览器中的安全限制,此Neo4j驱动程序无法提供失败原因。请使用浏览器开发控制台确定失败的根本原因。常见原因包括数据库不可用、使用了错误的连接URL或临时网络问题。如果启用了加密,请确保将浏览器配置为信任Neo4j配置为使用的证书。WebSocket readyState
为:3
反向代理使用由我们的公司CA签署的内部证书。Neo4J容器具有可用的根证书。连接的客户端也有可用的根证书。
当尝试连接到容器本身中的localhost:7687时,它会按预期工作;Cypher shell也是如此。
GitHub上也有一些关于Java版本的帖子,可能会导致这些问题--我尝试过OracleJDK8,OpenJDK 8 (HotSpot & J9)。
浏览器似乎也不相关--所描述的问题在FF、Chrome和Safari中重现。
发布于 2019-10-18 16:58:55
我也遇到过同样的情况,下面是我的解决方案,以便在使用Traefik2.0.2的docker群中运行Neo4j实例(在我的例子中是猎犬)。由于Traefik的新路由器概念,它完全冗长且难以阅读,因为您必须定义五个路由器。但至少它可以工作,让你可以通过wss和bolt访问wss界面和实际的数据库。也许可以简化我的配置。
此外,我在Traefik的文件提供程序提供的动态配置文件中指定了redirectScheme
中间件和由内部PKI签名的证书。
哈!
version: '3.7'
services:
neo4j:
image: neo4j:latest
networks:
- traefiknet
volumes:
- type: volume
source: data
target: /data
- type: volume
source: logs
target: /logs
- type: volume
source: conf
target: /conf
environment:
- NEO4J_AUTH=neo4j/somepassword
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
deploy:
replicas: 1
restart_policy:
condition: any
placement:
constraints:
- node.hostname == node-02
labels:
- traefik.http.services.neo4j.loadbalancer.server.port=7474
- traefik.http.routers.neo4j.rule=Host(`neo4j.dockerswarm.domain.com`)
- traefik.http.routers.neo4j-secure.rule=Host(`neo4j.dockerswarm.domain.com`)
- traefik.http.routers.neo4j.service=neo4j
- traefik.http.routers.neo4j-secure.service=neo4j
- traefik.http.routers.neo4j.middlewares=httpsredirection@file
- traefik.http.routers.neo4j-secure.tls=true
- traefik.http.routers.neo4j.entrypoints=web
- traefik.http.routers.neo4j-secure.entrypoints=web-secure
- traefik.http.services.neo4jdb.loadbalancer.server.port=7687
- traefik.http.routers.neo4jdb.rule=Host(`neo4jdb.dockerswarm.domain.com`)
- traefik.http.routers.neo4jdb-secure.rule=Host(`neo4jdb.dockerswarm.domain.com`)
- traefik.http.routers.neo4jdb.service=neo4jdb
- traefik.http.routers.neo4jdb-secure.service=neo4jdb
- traefik.http.routers.neo4jdb.middlewares=httpsredirection@file
- traefik.http.routers.neo4jdb-secure.tls=true
- traefik.http.routers.neo4jdb.entrypoints=web
- traefik.http.routers.neo4jdb-secure.entrypoints=web-secure
- traefik.tcp.services.neo4jdb.loadbalancer.server.port=7687
- traefik.tcp.routers.neo4jdb.rule=HostSNI(`neo4jdb.dockerswarm.domain.com`)
- traefik.tcp.routers.neo4jdb.service=neo4jdb
- traefik.tcp.routers.neo4jdb.tls=true
networks:
traefiknet:
external: true
volumes:
data:
logs:
conf:
https://stackoverflow.com/questions/54224081
复制相似问题