[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
로 접속하여 확인합니다.
댓글