DOCKER - Docker Compose (Redis와 node.js를 활용한 간단한 앱)

Sungjin·2021년 8월 20일
2

Docker

목록 보기
3/6
post-thumbnail

🎯 Test

node.js + redis client 로 구성된 컨테이너 와 redis server 컨테이너 구동 시켜 보기

  • DockerFile 작성
  • docker-compose.yml 파일 작성

node.js 에서 redis를 사용하는 방법
redis client와 redis server로 구성
node.js에서는 redis를 사용하는데 필요한 의존성들을 다운받은 후
createClient() 메소드를 호출 후 client를 생성할 수 있음..

🚀 Docker Compose 사용 이유

redis를 사용하기 위해서는 client와 server간 통신이 필요 합니다.
하지만 제가 작성하려는 프로그램은 client와 server를 각각의 컨테이너 공간으로 만들어 주려고 합니다.
컨테이너들은 서로 독립된 공간이기 때문에 아무런 설정이 없으면 컨테이너 사이의 접근이 불가하게 됩니다.
이 때 사용하는 것이 Docker Compose 기능 입니다.

🚀 node.js app

  • 페이지 접속 시 마다 Hello를 덧붙여주는 간단한 프로그램

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"]

🚀 docker-compse.yml

  • Docker Compose 기능을 사용하기 위한 설정파일을 작성
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파일이 있는 디렉토리에서 실행할 것!)

😍 이상으로 포스팅을 마치겠습니다. 감사합니다 :)

profile
WEB STUDY & etc.. HELLO!

0개의 댓글