如何在Docker容器外部连接mg_client?

6

我试图在Docker容器中访问mg_client,但是不幸的是,我无法连接它。我已经按照文档这里的说明进行了操作。

docker-compose.yaml

version: "3"
services:
  redis:
    image: redislabs/redisgraph
    container_name: redis
    restart: unless-stopped
    ports:
      - "6379:6379"

  memgraph:
    image: memgraph
    container_name: memgraph
    restart: unless-stopped
    ports:
      - "7687:7687"

CLI返回错误信息 -

输入图片描述

如上所示,Memgraph已成功初始化。

输入图片描述

奇怪的是,如果我在容器内执行它,我可以连接到它。

输入图片描述

可能是我的问题吗?

注:我正在尝试使用Python库/适配器创建一个同时运行并访问每个数据存储的Memgraph、Neo4j和RedisGraph项目。这是往前推进的第一步。

欢迎提供反馈。


1
嗨!看起来我明白了问题所在。当使用 docker-compose 时,情况并非如此。我正在撰写完整的答案... - buda
你在这个问题中附加的图片是什么?你是否有实际使用的连接服务器的代码和实际收到的错误消息?请将这些细节作为文本包含在问题中,而不是作为图像。 - David Maze
1个回答

5
如果使用标准的docker run命令,我已经成功连接。Memgraph运行命令为:
docker run --rm -p 7687:7687 --name test memgraph

Memgraph Docker run mg_client

如果使用docker-compose,则必须定义一个网络:
version: "3"
services:
  memgraph:
    image: memgraph:1.3.0-community
    container_name: memgraph
    networks:
      - test_network
    container_name: memgraph
    restart: unless-stopped
    ports:
      - "7687:7687"
networks:
  test_network:
    driver: bridge

Memgraph docker-compose up

请注意确保准确的网络名称,因为docker-compose{{folder_name}}_{{network_name}}作为网络名称。在我的情况下,这是stack_issue_test_network。使用此功能的好处是无需进行IP解析,可以直接使用容器名称。自docker-compose 3.5以来,网络名称可以被定义,但我现在正在使用Ubuntu 20.04上的1.25版本。

Connecting to a Memgraph instance run by docker compose

最后几点注意事项:

  • 如果您升级到Memgraph 1.3,则可以使用--log-level=TRACE --also-log-to-stderr以查看更多日志。
  • mg_client是一个已弃用的工具,由于您使用的是Ubuntu,因此应该相对容易安装 mgconsole 并直接从主机查询Memgraph实例。未来计划将mg_client替换为mgconsole

这个回答解决了我的问题。然而,接下来我想问你几个问题:1)为了可视化任何图形数据,需要将哪些卷挂载到主机上?2)Docker Hub 上是否有 Memgraph 的官方 Docker 镜像?3)有没有一种方法可以在不从源代码构建的情况下安装 mg_console?@user:4888809 - Raj
1
  1. 不需要卷来可视化数据。一旦实例运行,应通过Bolt协议获取数据并以某种方式进行可视化。
  2. Memgraph尚未提供DockerHub镜像,但计划很快提供该镜像。
  3. 安装mgconsole的唯一方法是从源代码构建它。与我们计划提供DockerHub镜像的方式类似,我们计划将mgconsole放入repo中。在这之前,我们可能会将mgconsole与Memgraph一起发布,因此不需要手动安装它。
- buda

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