🤓 스터디/🐳 [Udemy] Docker & Kubernetes 실전가이

[ Udemy : Docker & Kubernetes 실전가이드 (5) ] : Docker로 다중 컨테이너 구축하기 & docker compose

Mr.Baobab 2025. 3. 18. 10:30
반응형

 

1. React 컨테이너 설정

React를 Docker 컨테이너에서 실행할 때는 -it 태그를 추가해 한다. 이는 밑에서 배우는 Docker Compose 문서에서는 stdin_open: true 및 tty: true 옵션을 설정하여 해결할 수 있다.


2. Node 백엔드 컨테이너 실시간 변경 적용

Node.js 기반의 백엔드 컨테이너에서 코드 변경이 실시간으로 반영되도록 하려면 nodemon을 활용해야 한다. 이를 통해 컨테이너를 재시작하지 않아도 코드 변경 사항이 즉시 적용이 가능하다.


 

3. Docker 빌드 속도 개선

이미지 빌드 속도가 느리다면 .dockerignore 파일을 추가하고 불필요한 파일을 제외해야 한다. 예를 들어 node_modules, .git, Dockerfile 등을 .dockerignore에 등록하면 불필요한 파일이 컨테이너 이미지에 포함되지 않아 빌드 속도가 확실히 빨라진다. 

 


 

4. Docker Run 명령어 단축 문제

docker run 명령어가 너무 길어지는 문제가 발생할 수 있는데, 이는 밑에서 추가로 배운  Docker Compose를 사용해 해결 할 수 있다.

 


5. Docker Compose 활용하기

Docker Compose는 docker build 및 docker run 명령을 하나의 구성 파일로 관리하여 실행을 간편하게 만드는 도구. 다중 컨테이너 환경을 효율적으로 관리할 수 있지만, 다중 호스트 환경에서는 적합하지 않을 수 있다.

5.1 docker-compose.yaml 파일 작성

docker-compose.yaml 파일의 예제.

version: "3.8" # 도커 컴포즈 버전 지정

services: # 사용할 컨테이너 구성
  mongodb:
    image: 'mongo'
    volumes:
      - data:/data/db  # 명명된 볼륨 사용
    env_file:
      - ./env/mongo.env
  
  backend:
    build: ./backend # Dockerfile이 위치한 경로 지정
    ports:
      - '80:80'
    volumes:
      - logs:/app/logs  # 명명된 볼륨 사용
      - ./backend:/app  # 바인드 마운트 사용
      - /app/node_modules  # 익명 볼륨 사용
    env_file:
      - ./env/backend.env
    depends_on:
      - mongodb

  frontend:
    build: ./frontend
    ports:
      - '3000:3000'
    volumes:
      - ./frontend/src:/app/src  # 코드 변경 반영을 위한 바인드 마운트
    stdin_open: true  # -i 옵션과 동일
    tty: true  # -t 옵션과 동일
    depends_on:
      - backend

volumes:
  data:
  logs:

 

 


 

5.2 Docker Compose 실행 명령어

$ docker-compose up   # 컨테이너 빌드 및 실행
$ docker-compose down # 컨테이너 중지

이와 같이 docker-compose.yaml 파일을 작성하면 docker-compose up 명령어 하나로 모든 컨테이너를 실행할 수 있어 보다 효율적인 개발 환경을 구축할 수 있다.

 

 


🙄 느낀점

실습 위주로 수업이 진행되서 생각보다 재밌게 들을 수 있었다. 이론만 배우다 실습을 하니 뭔가 감을 잡는 느낌..?

 

 

반응형