인프런 커뮤니티 질문&답변

a24746440님의 프로필 이미지
a24746440

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

Delete 함수로 데이터 삭제하기

데이터베이스와 네스트가 연결이 안됩니다.

작성

·

181

0


import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { PostsModule } from './posts/posts.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { PostModel } from './posts/entities/posts.entity';

@Module({
  imports: [
    PostsModule,
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: '127.0.0.1',
      port: 5432,
      username: 'postgres',
      password: 'postgres',
      database: 'postgres',
      entities: [PostModel],
      synchronize: true,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
services:
  postgres:
    image: postgres:15
    restart: always
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    ports:
      - '5432:5432'
    environment:
      POSTGRESQL_USER: postgres
      POSTGRESQL_PASSWORD: postgres
      POSTGRESQL_DB: postgress
      POSTGRES_HOST_AUTH_METHOD: trust

현재 데이터베이스 도커 컴포즈 코드와 네스트 서버를 연결하려고 합니다.

Screenshot 2024-05-03 at 5.10.29 PM.png서버 로그는 이렇게 뜨고,

 

Screenshot 2024-05-03 at 5.10.48 PM.png익스텐션에서 들어가면 이런 에러가 뜹니다.

실습을 못하고 있어요. 도와주세요ㅜㅜ

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

POSTGRES_AUTH_METHOD를 추가하신 이유가 있을까요? (docker-compose.yaml에)

삭제하면 될것같습니다.

그래도 안된다면 저희 카카오채널에서 원격신청 해주세요!

https://links.codefactory.ai

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

데이터베이스 연결 문제로 인해 어려움을 겪고 계신 것 같습니다. 제시해주신 정보를 기반으로 몇 가지 조치를 취해볼 수 있습니다.

  1. Docker Compose 파일의 환경 변수 설정이 NestJS 서버 설정과 정확히 일치하는지 확인하세요. 특히 환경 변수 이름에 오타가 없는지 확인해보세요. 예를 들어, POSTGRESQL_USER, POSTGRESQL_PASSWORD, POSTGRESQL_DB가 NestJS 설정에서 사용하는 이름과 일치하는지 확인합니다. NestJS 설정에서는 username, password, database로 되어 있으니 이를 Docker Compose 환경 변수와 일치시켜야 합니다.

  2. Docker Compose 파일 내에서 POSTGRES_DB 환경 변수의 값에 오타가 보입니다. postgress가 아니라 postgres가 되어야 할 것 같습니다. 이것도 수정해 보세요.

  3. “trust” 인증 문제의 경우, PostgreSQL 설정에서 trust 인증 방식이 클라이언트 IP나 호스트에 대해서 적용되어 있는지 확인해야 합니다. pg_hba.conf 파일을 확인하여 trust로 설정된 부분이 있는지 확인하고, 필요하다면 md5 또는 다른 인증 방식으로 변경해 보세요.

  4. TypeOrmModule 설정에 명시된 호스트가 localhost로 되어 있습니다. Docker 컨테이너 내부에서 서비스 간 통신을 할 때는 서비스 이름을 사용할 수 있습니다. 따라서, Docker Compose 파일의 services에 정의된 서비스 이름(postgres)을 사용하여 호스트를 postgres로 변경해 보세요.

위의 사항들을 확인하고 수정한 후 다시 실행해 보세요. 환경 구성의 작은 차이가 연결 문제를 일으킬 수 있기 때문에, 설정 값들을 정확히 일치시키는 것이 중요합니다.

a24746440님의 프로필 이미지
a24746440

작성한 질문수

질문하기