백엔드 배포 시 DB 연결하기

텐엑스·2023년 10월 4일
0

백앤드 배포 시 express, nest, next에서는 api를 만들어서 사용해야 합니다. 개발 서버에서 docker로 띄워져 있는 DB에 연결하는 방법을 알아보겠습니다.

1. express DB 연결

  1. mongoose 추가(DB 커넥트 모듈 추가)
npm install mongoose
  1. 코드 추가
const mongoose = require("mongoose");

require("dotenv").config();

mongoose.connect(`${process.env.DATABASE_URL}`, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;

db.on("error", console.error.bind(console, "MongoDB connection error:"));
db.once("open", function () {
  console.log("Connected to MongoDB");
});

app.get("/", (req, res) => {
  res.send(`자동 배포 확인 `);
});
  1. DB_URL 시크릿 추가
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongodb

DATABASE_URL = mongodb://172.17.0.2:27017/test

  1. 배포 확인

2. nest DB 연결

  1. mongodb 모듈 추가(DB 커넥트 모듈 추가)
npm install @nestjs/mongoose mongoose
  1. 코드 추가
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
  imports: [
    ConfigModule.forRoot(),
    MongooseModule.forRootAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        uri: configService.get<string>('DATABASE_URL'),
        useNewUrlParser: true,
        useUnifiedTopology: true,
      }),
      inject: [ConfigService],
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
  1. DB_URL 시크릿 추가
  1. 배포 확인

3. Nextjs api DB 연결

  1. 코드 추가
const router = useRouter();
async function addMeetupHandler(enteredMeetupData) {
  const response = await fetch("/api/new-meetup",{			// 1.
    method:"POST",
    body: JSON.stringify(enteredMeetupData),
    headers:{
      "Content-Type":"application/json"
    }
  });
  const data = await response.json();
  router.replace("/");
}
return(
  <NewMeetupForm onAddMeetup={addMeetupHandler}/>			// 2.
)
  1. DB_URL 시크릿 추가

  2. 배포 확인

profile
엔아이 마케팅 개발팀입니다

0개의 댓글

관련 채용 정보