[Docker] docker compose 이용해서 node.js , redis 애플리케이션 띄우기

2023. 4. 15. 14:00docker

Node.js 환경에서 Redis사용법

  • redis-server를 작동
  • redis 모듈 다운
  • redis 모듈 다운 후 redis클라이언트 생성
    • redis.createCleint()함수를 이용해 클라이언트 생성
  • 하지만 여기서 redis server가 작동하는 곳과 Node.js 앱이 작동하는 곳이 다른 곳이면 host인자와 port인자를 명시
    • ex) 예로
    • const client = redis.createClient({ host: "https://redis-server.com", port : 6379 })

도커 환경에서 redis 클라이언트 생성시 주의사항

보통 도커를 사용하지 않는 환경에서는 redis서버가 작동되고 있는 곳의 host옵션을 URL로 위에 처럼 주면 되지만, 도커 Compose를 사용할 때는 host옵션을 docker-compose.yml파일에 명시한 컨테이너 이름으로 주면됩니다.

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

실제 node.js 앱에 redis로 간단한 기능 구현

페이지 refresh했을 때 숫자 +1씩 올라가도록 기능 구현. 전체 코드

const express = require("express");
const redis = require("redis");


const app = express();
const PORT = 8080;

// redis 클라이언트
const client = redis.createClient({
    host: "redis-server",
    port: 6379
})

client.set('number', 0)

app.get('/', (req, res) => {
    res.send('hello.. docker compose')

    client.get("number", (err, number) => {
        // 현재 숫자를 가져온 후 1씩 올려줌.
        client.set("숫자가 1씩 증가합니다. 숫자: " , number + 1)
    })
})



app.listen(() => {
    console.log(`server is running on ${PORT}`)
})

dockerfile 작성하기

FROM node:14

WORKDIR /usr/src/app

COPY ./ ./

RUN npm install

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

도커 컨테이너 간 통신할 때 나타나는 에러

node애플리케이션 코드와 dockerfile까지 작성했으니 실제 애플리케이션을 실행하겠습니다.

Redis클라이언트를 실행하려면 Redis서버가 먼저 구동되어야 합니다.

먼저 레디스 서버를 위한 컨테이너를 실행하고,

Node.js를 위한 컨테이너를 실행하겠습니다.

docker build