node.js 에서 redis를 사용하는 방법
redis client와 redis server로 구성
node.js에서는 redis를 사용하는데 필요한 의존성들을 다운받은 후
createClient() 메소드를 호출 후 client를 생성할 수 있음..
redis를 사용하기 위해서는 client와 server간 통신이 필요 합니다.
하지만 제가 작성하려는 프로그램은 client와 server를 각각의 컨테이너 공간으로 만들어 주려고 합니다.
컨테이너들은 서로 독립된 공간이기 때문에 아무런 설정이 없으면 컨테이너 사이의 접근이 불가하게 됩니다.
이 때 사용하는 것이 Docker Compose 기능 입니다.
code
const express=require('express');
const redis=require('redis');
const client=redis.createClient({
host: "redis-server",
port: 6379
})
const app=express();
app.listen(8080);
client.set("name","sungjin");
app.get('/',(req,res)=>{
client.get("name",(err,name)=>{
client.set("name",name+" hello!")
res.send("안녕하세여! "+name)
})
})
console.log("Server is Running");
Dockerfile
FROM node:10
WORKDIR /usr/src/app
COPY ./ ./
RUN npm install
CMD ["node","index.js"]
version: "3"
services:
redis-server:
image: "redis"
node-app:
build: .
ports:
- "5000:8080"
여기서 services란 컨테이너를 감싸고 있는 거라 생각 하시면 될 것 같습니다.
컨테이너로 redis-server와 node-app 두 가지를 설정 해 주었으며
redis-server의 image는 "redis"(Docker hub에서 갖고 올 이미지)로 지정하였습니다.
node-app 컨테이너 에서 build는 빌드할 Dockerfile의 경로를 적어 주면 됩니다.
. 은 현재 디렉토리를 의미 합니다.
ports는 로컬 포트 번호 5000 번을 컨테이너 포트 번호 8080에 매핑 하였습니다.
docker-compose up
(이미지가 있으면 그냥 컨테이너를 실행, 없으면 이미지 빌드 후 실행)docker-compose --build
(무조건 이미지를 빌드 후 실행)실행 종료 시엔 다른 터미널에서 docker-compose down
을 입력 해 주시면 됩니다. (docker-compose.yml파일이 있는 디렉토리에서 실행할 것!)