2022-08-08(월) TIL

황인호·2022년 8월 8일
1

TIL 모음

목록 보기
106/119

Docker-compose 로 서버실행하기

docker-compose : 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구입니다.

이는 멀티 컨테이너 사이에 통신을 할 수 있게 해주고 멀티 컨테이너 상황에서 쉽게 네트워크를 연결시켜주기 위해서 Docker-compose를 이용한다.

Redis : REmote Dictionary Server 의 약자로 메모리 기반의 key-value 구조입니다.
데이터 관리시스템이며, 모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터 베이스(NoSQL) 입니다.

Redis를 사용하는 이유 => 메모리에 저장을 하기 때문에 MySQL 같은 데이터베이스 데이터를 저장하는 것과 데이터를 불러올때 훨씬 빠르게 처리할수가 있으며, 비록 메모리에 저장하지만 영속적으로 보관이 가능하다.
그래서 서브를 재부팅해도 데이터를 유지할 수 있는 장점이 있다.

Node.js환경에서 Redis 사용 방법

  • 먼저 redis-server를 작동시켜주어야한다.
  • 그리고 redis 모듈을 다운받는다(npm i redis)
  • Redis에서 제공하는 createClient() 함수를 이용해서 redis.createClient로 레디스 클라이언트를 생성해준다.
  • 하지만 여기서 redis server가 작동하는 곳과 Node.js 앱이 작동하는 곳이 다른곳이라면 host 인자와 port 인자를 명시해주어야 한다.

docker-compose.yml 작성하기

YAML은 ain't markup language 의 약자이며, 일반적으로는 구성 파일 및 데이터가
저장되거나 전송되는 응용프로그램에서 사용되고 원래는 XML이나 json포맷으로 많이 쓰였지만
좀 더 사람이 읽기 쉬운 포맷으로 나타난테 yaml입니다.

[app.js]

const express = require('express')
const redis = require('redis')

const client = redis.createClient({
    host:"redis-server",
    port:6379
})

const app = express()
client.set("number", 0)
app.get('/', (req,res)=> {
    client.get("number", (err, number)=> {
        client.set("number", parseInt(number)+1)
        res.send("숫자가 1씩 올라갑니다. 숫자:"+number)
    })
})

app.listen(8080)
console.log('Server is running');

[Dockerfile]

FROM node:10

WORKDIR /usr/src/app

COPY . .

RUN npm install

CMD ["node", "app.js"]

[Docker-compose.yml]

version: '3'
services:
  redis-server:
    image: "redis"
  node-app:
    build: .
    ports:
     - "5000:8080"

[Docker-compose 실행 명령어]

docker-compose up : 실행 명령어

만약 오타가있어서 재실행 해야할 경우
docker-compose up --build : 수정 후 재실행 명령어

docker-compose up : 이미지가 없을때 이미지를 빌드하고 컨테이너를 시작
docker-compose up --build : 이미지가 있든 없든 이미지를 빌드하고 컨테이너를 시작

Docker-Compose 실행 완료

[vscode]

[localhost]

profile
성장중인 백엔드 개발자!!

0개의 댓글