본문 바로가기
Application/Docker

[Docker] node, redis 실행 및 연결

by NAMP 2019. 6. 12.

[Docker] node, redis 실행 및 연결

tags: docker, docker-compose, node, npm, redis, redis-server

node

node 프로젝트 생성

npm init

해당 폴더에 packages.json 파일이 생성됩니다.

node 패키지 설치

npm install --save express
npm install --save redis

app.js 작성

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

const app = express()

const client = redis.createClient()
client.set("visits", 0)

app.get("/", (req, res) => {
  client.get("visits", (err, visits) => {
    res.send("Number of visit is " + visits)
    client.set("visits", parseInt(visits) + 1)
  })
})

app.listen(8081, () => {
  console.log("Listening 8081 port")
})

redis-server 에 접속하고 express 서버를 실행하는 코드입니다.

로컬 테스트

redis 설치

brew install redis

redis 실행

redis-server

redis 실행 확인

$ redis-cliredis-cli

127.0.0.1:6379> set test 1234
OK
127.0.0.1:6379> get test
"1234"

로컬에서 redis-server가 구동중입니다.

node 실행

packages.json 파일을 수정합니다. scripts 에 start 부분을 추가합니다.

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },

npm 을 실행합니다.

$ npm start

> node_redis@1.0.0 start /Users/jace/Workspace/docker/node-redis
> node app.js

Listening 8081 port

브라우저에서 localhost:8081로 접속하여 확인합니다.

Dockerfile 생성

프로젝트폴더에 Dockerfile 을 생성합니다.

FROM node:10-alpine

WORKDIR "./app"

COPY ./package.json .

RUN npm install

COPY ./ ./

CMD ["npm", "start"]

node_modules를 제외하기 위해 dockerignore 파일을 추가합니다.

**/node_modules

docker-compose.yml 파일 생성

version: "2"
services:
  redis-server:
    image: "redis"
  node-app:
    build: .
    ports:
      - "8081:8081"

app.js 파일 수정

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

redis-server 이름은 docker-compose.yml 에 작성되어 있습니다.

docker-compose 실행

$ sudo docker-compose up --build

동일하게 브라우저에서 localhost:8081로 접속하여 확인합니다.

파일

댓글