Docker fullstack - Node Js 구성하기
728x90
구성
- node.js
- react.js
- postgres
- nginx
docker-fullstack 폴더를 만든뒤 backend 폴더를 만들어줍니다.
/backend/package.json
npm init -y
package.json 파일 만들기
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js",
"dev": "nodemon server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "4.17.1",
"pg": "8.6.0",
"nodemon": "2.0.7",
"body-parser": "1.19.0"
}
}
개발환경에서는 nodemon 이용해 hot reloading을 합니다.
dependencies 에 종속성들을 넣어줍니다.
server.js
// 필요한 모듈들을 가져오기
const express = require('express');
const bodyParser = require('body-parser');
// create express server
const app = express();
// json 형태로 오는 요청의 본문을 해석해줄수 있게 등록
app.use(bodyParser.json());
// Express 서버 포트 5000에서 시작
app.listen(5000, () => {
console.log('server is running');
});
db setup
db.js
const { Pool } = require("pg");
export const pool = new Pool({
user: "root",
host: "postgres",
password: "postgres",
database: "app",
port: 5432,
});
server.js 파일과 같은 위치에 db.js 파일을 생성하고 다음과 같이 설정합니다. dotenv 파일을 만들어서 설정하셔도 무방합니다.
server.js 에서 db import 하기
...
const express = require('express');
const bodyParser = require('body-parser');
const db = require('./db');
// create express server
const app = express()
...
react 에서 입력한 글을 database 에 저장하는 api 를 만들도록 하겠습니다.
docker 가 껏다 켜져도 database 에 있는 data 들이 사라지지 않도록 하는 것이 중요!!
api 만들기
server.js
...
...
// json 형태로 오는 요청의 본문을 해석해줄수 있게 등록
app.use(bodyParser.json());
//DB lists 테이블에 있는 모든 데이터를 프론트 서버에 보내주기
app.get('/api/values', (req, res) => {
// db에서 모든 정보 가져오기
db.pool.query('SELECT * FROM lists;', (err, results, fileds) => {
if (err) {
return res.status(500).send(err);
} else {
return res.json(results);
}
});
});
// Express 서버 포트 5000에서 시작
app.listen(5000, () => {
console.log('server is running');
});
테이블 생성 과 테이블에 값 넣기
전체 소스코드
// 필요한 모듈들을 가져오기
const express = require('express');
const bodyParser = require('body-parser');
const db = require('./db');
// create express server
const app = express();
// json 형태로 오는 요청의 본문을 해석해줄수 있게 등록
app.use(bodyParser.json());
//DB lists 테이블에 있는 모든 데이터를 프론트 서버에 보내주기
app.get('/api/values', (req, res) => {
// db에서 모든 정보 가져오기
db.pool.query('SELECT * FROM lists;', (err, results, fileds) => {
if (err) {
return res.status(500).send(err);
} else {
return res.json(results);
}
});
});
// 테이블 생성하기
db.pool.query(
`CREATE TABLE lists (
id INTEGER AUTO_INCREMENT,
value TEXT,
PRIMARY KEY (id)
)`,
(err, results, fileds) => {
console.log('results', results);
}
);
// client 에서 입력한 값을 데이터 베이스 lists 테이블에 넣어주기
app.post('/api/value', (req, res, next) => {
// db에 값 넣어주기
db.pool.query(
`INSERT INTO lists (value) VALUES("${req.body.value}")`,
(err, results, fileds) => {
if (err) {
return res.status(500).send(err);
} else {
return res.json({ success: true, value: req.body.value });
}
}
);
});
// Express 서버 포트 5000에서 시작
app.listen(5000, () => {
console.log('server is running');
});
node js 부분의 코드는 작성이 끝났고 다음 글에서 react js 부분을 만들도록 하겠습니다.
github 참고 링크 github
728x90
'Docker' 카테고리의 다른 글
Kubenetes 배포시 5xx 이슈에 대한 해결책 (0) | 2023.03.24 |
---|---|
Docker hub 에 Image Push 하기 (0) | 2022.05.05 |
유용한 도커 명령어 정리 (0) | 2021.10.08 |
클라우드에 docker compose 로 배포시 Time zone 변경하기 (0) | 2021.09.28 |
Docker fullstack - React Js 구성하기 (0) | 2021.06.14 |
댓글
이 글 공유하기
다른 글
-
Docker hub 에 Image Push 하기
Docker hub 에 Image Push 하기
2022.05.05 -
유용한 도커 명령어 정리
유용한 도커 명령어 정리
2021.10.08 -
클라우드에 docker compose 로 배포시 Time zone 변경하기
클라우드에 docker compose 로 배포시 Time zone 변경하기
2021.09.28 -
Docker fullstack - React Js 구성하기
Docker fullstack - React Js 구성하기
2021.06.14