๋ง๋ค๊ณ ์ ํ๋ ๊ฐ๋จํ node app์ ์๋ก๊ณ ์นจ์ ํ ๋๋ง๋ค ํน์ '/'(๋ฃจํธ) ๊ฒฝ๋ก๋ก ์ ๊ทผํ ๋๋ง๋ค ์ซ์๋ฅผ ์ฆ๊ฐ์ํค๋ app์ ๋๋ค.
Docker compose
๊ฐ ์ฌ์ฉ๋์ด์ผ ํ๋ ์ด์ ๋ app์ ๋ชจ๋ ์์ฑํ๊ณ docker๋ก ๊ตฌ๋์์ผ๋ณด๋ฉด ์ ์ ์์ ๊ฑฐ์์.express
์ redis
๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ๋ ๊ฐ ๋ชจ๋์ ์ค์นํด์ค๋๋ค.
npm install express --save
npm install redis --save
dockerํ๊ฒฝ์์ node app๊ณผ redis๋ฅผ ์ฐ๊ฒฐํ๋ ์ค์ ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
[ index.js ]
const express = require("express");
const redis = require("redis");
const app = express();
// redis client ์ค์
const client = redis.createClient({
host: "redis-service",
ports: 6379,
});
[ index.js ]
const port = 8080;
// ์๋ฒ ๊ตฌ๋์ ์ฆ๊ฐ๋ ์ซ์๋ 0์ผ๋ก ์ด๊ธฐํ (redisDB์ ์ ์ฅ)
// redis๋ key-value ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
// key=num, value=0
client.set("num", 0);
app.get("/", (req, res) => {
client.get("num", (err, number) => {
// redis๋ก๋ถํฐ key๊ฐ์ num์ผ๋ก ํ๋ ๊ฐ์ get
res.send("Incresed number from redis : " + number); // redis๋ก ๋ถํฐ getํ ๊ฐ์ ๊ทธ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ต
client.set("num", parseInt(number) + 1); // num์ key๊ฐ์ผ๋ก ํ๋ value์ +1 ๋งํผ ์ฆ๊ฐ์์ผ์ set(์ ์ฅ)
});
});
app.listen(port);
console.log(`running on ${port}`);
๋ค์์ผ๋ก ์์ฑํ node app์ docker image๋ก buildํ๊ธฐ ์ํด Dockerfile์ ์์ฑํด์ค๋๋ค.
[ Dockerfile ]
FROM node:10
WORKDIR /usr/src/app
COPY ./ ./
RUN npm install
CMD ["node", "index.js"]
์ฌ๊ธฐ๊น์ง๊ธฐ ์ ๋ฒ์ ํ๋ docke๋ฅผ ์ด์ฉํ ๊ฐ๋จํ node app๋ง๋ค๊ธฐ ์
๋๋ค.
์ฐ๋ฆฌ๋ redis๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํ๊ฐ์ง ์ค์ ์ ๋ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
ํด๋น ์ค์ ์ docker-compose.yml
์ ์์ฑํด์ค๋๋ค.
version: "3" # Docker-compose version
services: # ๋ฉํฐ ์ปจํ
์ด๋ ํ๊ฒฝ์ผ๋ก ๋ฌถ์ ์ด๋ฏธ์ง๋ฅผ ๋ช
์
redis-service: # ์์ฑ๋ ์ปจํ
์ด๋์ ์ด๋ฆ
image: "redis" # ์ปจํ
์ด๋ ์์ฑ์ ์ฌ์ฉ๋ ์ด๋ฏธ์ง
compose-app:
build: . # ์ด๋ฏธ์ง๋ก ๋น๋์ ํ์ํ Dockerfile์ด ์๋ ๊ฒฝ๋ก
ports: # ํฌํธ ๋งคํ
- "8080:8080"
docker-compose up
์ผ๋ก ์ปจํ
์ด๋๋ฅผ ๊ตฌ๋์์ผ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค.docker-compose down
docker-compose up --build
์ ์
๋ ฅํ์ธ์.๊ฐ์ฌํฉ๋๋ค ใ