도커(4): docker Compose

김현진·2020년 10월 19일
0

도커

목록 보기
4/7

docker compose란

  • 다중 컨테이너 도커 어플리케이션을 정의하고 실행하기 위한 도구
  • yaml 파일로 여러 개의 도커컨테이너의 정의를 작성하여 한 번에 많은 컨테이너들을 작동시키고 관리할 수 있는 툴(orchestration 툴)

설치 확인

  • 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의 약자이며 메모리 기반의 키-값구조이며 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터 베이스입니다. 또 서버를 재부팅해도 데이터를 유지할 수 있음(세션을 사용할때 좋음)

1. server.js 코드작성


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('연결중')
});

2. Dockerfile작성

FROM node:12

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY ./ ./

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

3. docker-compose.yml 작성

version: "3" # docker-compose 3버젼을 사용
services:  # 이곳에는 컨테이너로 돌릴 서비스 목록
  redis-server: # 컨테이너 이름
    imgae: "redis" # 이미지 이름
  node-app: # 컨테이너 이름
    build: ./ # node-app에서 사용할 Dockerfile위치를 적어주면 되고 같은 디렉토리 있으니 ./
    ports: # port mapping
      - "5000:8000"
  • version에 관련된 설명이 있는 링크 첨부 첨부

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 파일을 작성해보도록 하기

profile
기록의 중요성

0개의 댓글