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

How to connect mg_client outside container in Docker?

我正在尝试访问 docker 容器内的 mg_client,但不幸的是,我无法连接它。我已按照文档 here

中的说明进行操作

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 returns 返回一个错误 -

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

奇怪的是,如果我在容器内执行它,我能够连接。

从我的角度来看可能有什么错误?

PS:我正在尝试同时使用 Memgraph、Neo4j 和 RedisGraph 运行 创建一个项目,并使用 Python libs/adapter 访问每个数据存储。这是迈向它的第一步。

我们将不胜感激。

如果使用标准 docker run,我已经成功连接。 Memgraph 运行 命令是

docker run --rm -p 7687:7687 --name test memgraph

如果使用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

请注意确切的网络名称,因为 docker-compose{{folder_name}}_{{network_name}} 作为网络名称。就我而言,那是 stack_issue_test_network。从docker-compose3.5开始可以自定义网络名,但是我此时在Ubuntu20.04上用的是1.25

使用它的好处是不必进行 IP 解析。可以用容器名代替。

一些最后的说明:

  • 如果升级到 Memgraph 1.3,--log-level=TRACE --also-log-to-stderr 可用于查看更多日志。
  • mg_client 是一个已弃用的工具,因为您使用的是 Ubuntu,安装 mgconsole 并直接从主机查询 Memgraph 实例应该相对简单。有计划以后打包mgconsole代替mg_client