首页 > 解决方案 > 使用 Docker Compose 将 nestjs 连接到 redis

问题描述

我正在尝试将我的 Nestjs 应用程序连接到 Redis,如下所示:

这是我的内容docker-compose.yml

version: '3.7'

services:
  main:
    container_name: main
    build:
      context: .
      target: development
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - ${PORT}:${PORT}
      - 9229:9229
    command: yarn start:dev
    env_file:
      - .env

    networks:
      - webnet
  redis:
    image: 'redis:alpine'

networks:
  webnet:

为了redis在我的 nestjs 应用程序中增强功能,我正在使用nestjs-redis,相关部分app.module.ts如下所示:

import { RedisModule } from 'nestjs-redis';

@Module({
 imports: [
  RedisModule.register({})
 ]
})

但是,当我尝试docker-compose up在我的设置中运行时,我收到以下错误:

[ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379

感谢您的帮助!

标签: dockerredisnestjs

解决方案


在使用docker-compose.yml时,请尝试使用内部links功能。

version: '3.7'

services:
  main:
    container_name: main
    build:
      context: .
      target: development
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - ${PORT}:${PORT}
      - 9229:9229
    command: yarn start:dev
    links:
      - redis
    env_file:
      - .env
    networks:
      - webnet
  redis:
    image: 'redis:alpine'
    ports:
      - 6379:6379
    networks:
      - webnet

networks:
  webnet:

并在您的代码段中,以下列方式传递主机

import { RedisModule } from 'nestjs-redis';

@Module({
 imports: [
  RedisModule.register({host: "redis"})
 ]
})

推荐阅读