【问题标题】:Nestjs with postgres and redis on docker connection refuseddocker连接上带有postgres和redis的Nestjs被拒绝
【发布时间】:2021-06-19 01:32:26
【问题描述】:

我已经使用 postgres 和 redis dockerize nestjs 应用程序。 我该如何解决这个问题? Postgres 和 redis 拒绝 tcp 连接。 这是 docker-compose.yml 和控制台结果。 我正在为 redis 使用 typeorm 和 @nestjs/bull。

希望多多帮助。 谢谢

【问题讨论】:

  • 假设 nextjs 应用程序正在主机上运行,​​将两个服务的网络模式更改为“主机”应该可以工作。阅读更多here.

标签: postgresql docker redis nestjs


【解决方案1】:

当使用docker-compose 时,容器不一定需要指定它们所在的网络,因为它们可以通过容器名称(例如postgres,在您的情况下为redis)相互访问,因为它们位于同一个网络。请参阅Networking in Compose 了解更多信息。

另外,expose 不做任何操作,是多余的。既然您指定了ports,那么告诉Docker 容器的哪些端口被暴露并绑定到主机的哪些端口应该绰绰有余。

对于redis-alpine,启动命令为redis-server,无需再次指定。此外,在这种情况下,您指定的环境是多余的。

尝试以下docker-compose.yaml 并添加以上所有建议:

version: "3"

services:
  postgres:
    image: postgres:alpine
    restart: always
    ports:
      - 5432:5432
    volumes:
      - ./db_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=lighthouse

  redis:
    image: redis:alpine
    restart: always
    ports:
     - 6379:6379

希望这会有所帮助。干杯! ?

【讨论】:

  • 嗨,Eranga 感谢您的热情回复。我试过按照你的回答,但仍然是同样的问题。你能帮我更多吗?谢谢。
  • 我相信您的 Nest 应用程序正在本地机器上运行。不在码头集装箱中?另外,您能否检查一下postgresredis 是否在您的机器中作为容器运行? docker container ls 的输出是什么?
  • 我在文件中添加了一个小改动。我做了db_data:/var/lib/postgresql/data/ --> ./db_data:/var/lib/postgresql/data/。现在可以试试吗?
  • 我试过./db_data:/var/lib/postgresql/data/,但还是一样。
  • 您是否在本地机器的 docker 容器内运行 NestJS 应用程序?
猜你喜欢
  • 2017-07-10
  • 2016-02-14
  • 2018-07-03
  • 2019-01-22
  • 2021-03-23
  • 2021-10-12
  • 1970-01-01
  • 2020-09-08
  • 2019-01-02
相关资源
最近更新 更多