docker-compose : 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구입니다.
이는 멀티 컨테이너 사이에 통신을 할 수 있게 해주고 멀티 컨테이너 상황에서 쉽게 네트워크를 연결시켜주기 위해서 Docker-compose를 이용한다.
Redis : REmote Dictionary Server 의 약자로 메모리 기반의 key-value 구조입니다.
데이터 관리시스템이며, 모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터 베이스(NoSQL) 입니다.
Redis를 사용하는 이유 => 메모리에 저장을 하기 때문에 MySQL 같은 데이터베이스 데이터를 저장하는 것과 데이터를 불러올때 훨씬 빠르게 처리할수가 있으며, 비록 메모리에 저장하지만 영속적으로 보관이 가능하다.
그래서 서브를 재부팅해도 데이터를 유지할 수 있는 장점이 있다.
Node.js환경에서 Redis 사용 방법
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]