[Docker] Compose

박재현·2022년 4월 9일
0
post-custom-banner

Docker Compose

컨테이너 연결 및 실행

docker compose up : 실행 (이미지가 없을 때만 빌드 + 실행)
docker compose up --build : 실행 ( 무조건 새로운 이미지 빌드 + 실행), 소스코드 수정 시 해당 명령어 사용
docker compose down : 실행된 컨테이너 중지

하나의 터미널에서 컨트롤 하기

docker compose up -d --build
-d : 앱을 백그라운드에서 실행 (앱에서 나오는 output 표출 하지 않고 빠져나옴)


Redis + Node.js

  • 들여쓰기 중요!!

docker-compose.yml

version: "3"          # 도커 컴포즈 버전
services:             # 실행시킬 컨테이너들
  redis-server:       # 컨테이너 이름
    image: "redis"    # 컨테이너에서 사용되는 이미지
  node-app:           # 컨테이너 이름
    build: .          # 현 디렉토리에 있는 Dockerfile 경로
    ports:            # 포트 맵핑 -> 로컬 포트: 컨테이너 포트
      - "3000:8080"


# docker-compose up

# YAML
# Ain't markyp language 의 약자
# json, xml 파일과 같이 파일 및 데이터가 저장, 전송하는 파일

server.js

const express = require('express');
const redis = require('redis');

// 레디스 클라이언트 생성
const client = redis.createClient({
    // 기본 실행 환경 : "https://redis-server.com"
    // 도커 실행 환경 : docker-compose.yml 명시한 컨테이너 이름
    host: "redis-server", 
    port: 6379 // 레디스 기본 port
})

const app = express();

// 숫자 0부터 시작
client.set('number', 0);

app.get('/', (req, res) => {
    // 경로 접속할 때마다 number 1씩 증가
    client.get('number', (err, number) => {
        res.send(` 숫자가 2씩 증가 합니다. ${number}`);
        client.set('number', parseInt(number) + 2);
    })
})

app.listen(8080, () => {
    console.log(`Server is running`);
});

Dockerfile

FROM node:16

WORKDIR /usr/src/app

COPY ./ ./

RUN npm install

CMD [ "node", "server.js" ]

참조 : 인프런강의

post-custom-banner

0개의 댓글