본문 바로가기

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' 카테고리의 다른 글

8. docker FE, BE, mysql, nginx 실습  (0) 2024.06.13
7. docker, aws, github action 실습  (0) 2024.06.09
4. node.js로 도커 실행 실습  (0) 2024.05.06
3. 도커 이미지 만들기  (0) 2024.05.01
2. 도커 클라이언트 명령어  (0) 2024.04.22