본문 바로가기

docker

5. docker compose

따라하며 배우는 도커와 CI환경

 

1. docker compose란?

다수의 도커 컨테이너를 실행하기 위한 도구

 

ex)
노드 앱, 레디스 서버 두 개의 컨테이너가 있고 두 컨테이너의 네트워크 통신이 필요할때에

도커 컴포즈를 사용

 

2. 실습 소스코드

server.js

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

const app = express();
const client = redis.createClient({
  host: "redis-server",
  port: 6379
});

client.set("refreshCount", 0);

app.get('/', (req, res) => {
  client.get("refreshCount", (err, refreshCount) => {
    res.send(`refreshCount: ${refreshCount}`);
    dlient.set("refreshCount", ++Number(refreshCount));
  });
});

app.listen(8080);
console.log('server is running');

 

Dockerfile

FROM node:10

WORKDIR /usr/src/app

COPY ./ ./

RUN npm install

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

 

docker-compose.yml

version: "3"
services:
  redis-server:
    image: "redis"
  node-app:
   build: .
   ports:
     - "49160:8000"

 

  • version: 컴포즈의 버전
  • services: 실행하려는 컨테이너들 정의
    • 컨테이너들이 있는 영역을 services라고 함
  • image: 컨테이너에서 사용하는 이미지
  • build: 컨테이너 빌드 경로
  • ports: 로컬, 컨테이너의 포트매핑

3. docker compose 명령어

  • docker-compose up: 이미지 없을때 빌드, 컨테이너 시작
  • docker-compose up --build: 이미지 있든 없든 빌드, 컨테이너 시작
  • docker compose down: 종료
  • -d: 앱 백그라운드 실행 detached 모드
    • ex)  docker-compose up -d

'docker' 카테고리의 다른 글