如何使用 Nodejs 连接应用程序 运行 和使用 docker-compose 的服务依赖项 运行

How do I connect the app running using Nodejs with the service dependencies running using docker-compose

我正在尝试 运行 这个存储库 (https://github.com/energywebfoundation/ssi-hub)。我 运行 将应用程序与服务依赖项分开 运行 在 docker-compose 中。但是,我的应用无法连接到 docker-compose 文件中的 redis 服务 运行ning。我收到以下错误

      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo ENOTFOUND redis
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26)
Emitted 'error' event on RedisClient instance at:
    at RedisClient.on_error (/home/danish/Desktop/ssi-hub/node_modules/redis/index.js:342:14)
    at Socket.<anonymous> (/home/danish/Desktop/ssi-hub/node_modules/redis/index.js:223:14)
    at Socket.emit (node:events:520:28)
    at Socket.emit (node:domain:475:12)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -3008,
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'redis'
}

我在 docker composer

中将此配置文件用于 运行 redis 服务

services:
  postgres:
    image: postgres:12-alpine
    environment:
      POSTGRES_PASSWORD: password
      POSTGRES_USERNAME: postgres
      POSTGRES_DB: dev-test
    networks:
      - main
    ports:
      - 5432:5432
  nats:
    container_name: nats
    image: synadia/nats-server:nightly
    volumes:
      - ./config/:/etc/nats
    command: '-c /etc/nats/nats.conf'
    networks:
      - main
    ports:
      - '4222:4222'
      - '8222:8222'
      - '9222:9222'
  redis:
    container_name: redis
    image: redis:${REDIS_VERSION}
    command: redis-server --requirepass ${REDIS_PASSWORD}
    volumes:
      - $PWD/redis-data:/var/lib/redis
    ports:
      - '6379:6379'
    environment:
      - REDIS_REPLICATION_MODE=master
    networks:
      - main
networks:
  main:

我尽力在网上找到答案,但我无法解决这个问题。预先感谢您的帮助。

能否尝试克隆此存储库:

https://github.com/wildone/nats-test

然后运行docker compose up.

看不到任何错误,出现 UI。

谢谢您的回答。我在这个存储库 (https://github.com/energywebfoundation/ssi-hub) 的 .env 文件中的配置有一些问题。我将主机名更改为 localhost,并且能够将 docker 服务与节点应用程序连接起来。谢谢