mac, window 유저는 docker를 설치하였다면 기본적으로 설치가 되어 있음.
리눅스는 따로 설치를 해줘야 됨
Linux
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose // 권한부여
정상적으로 설치 되었는지 확인 docker-compose version
redis 데이터베이스란: Remote Dictionary Server의 약자이며 메모리 기반의 키-값구조이며 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터 베이스입니다. 또 서버를 재부팅해도 데이터를 유지할 수 있음(세션을 사용할때 좋음)
const express = require('express');
const redis = require('redis');
// 레디스 클라이언트 생성
const client = redis.createClient({
host: "redis-server",
// docker 환경이 아닐때 "https://redis-server.co", docker 환경이 일때
//"redis-server" docker-compose.yml 파일에 명시한 컨테이너 이름을 명시해야됨
port: 6379 // redis의 기본포트
});
const app = express();
client.set('number', 0);
app.get('/', (req, res) => {
client.get("number", (err, number) => {
client.set("number", parseInt(number + 1))
res.send(`숫자가 1씩 올라갑니다. 숫자: ${number + 1}`)
});
});
app.listen(8080, () => {
console.log('연결중')
});
FROM node:12
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD ["node", "server.js"]
version: "3" # docker-compose 3버젼을 사용
services: # 이곳에는 컨테이너로 돌릴 서비스 목록
redis-server: # 컨테이너 이름
imgae: "redis" # 이미지 이름
node-app: # 컨테이너 이름
build: ./ # node-app에서 사용할 Dockerfile위치를 적어주면 되고 같은 디렉토리 있으니 ./
ports: # port mapping
- "5000:8000"
docker-compose.yml 파일을 작성 한후 docker compose에 의해서 앱을 실행
docker-compose up
docker-compose down
을 이용해서 종료 할 수 있음
docker-compose up을 하면 docker-compose.yml 파일을 읽어 컨테이너가 생성된다.
docker-compose -d up
를 이용해서 백그라운드에서 실행 할 수 있음.(output은 확인 할 수 없는 단점이 있음)
docker-compose --build
코드를 수정했을때 --build 옵션을 주어 실행하면 됨
내일은 좀 더 복잡한 docker-compose 파일을 작성해보도록 하기