백앤드 배포 시 express, nest, next에서는 api를 만들어서 사용해야 합니다. 개발 서버에서 docker로 띄워져 있는 DB에 연결하는 방법을 알아보겠습니다.
npm install mongoose
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(`자동 배포 확인 `);
});
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongodb
DATABASE_URL = mongodb://172.17.0.2:27017/test
npm install @nestjs/mongoose mongoose
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 {}
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.
)
DB_URL 시크릿 추가
배포 확인