[98-100] Docker Compose 명령어와 다중 컨테이너 구성

728x90
반응형

Docker Compose 명령어와 다중 컨테이너 구성

 

Docker Compose 주요 명령어

서비스 시작


  
# 모든 서비스 시작
docker-compose up
# 백그라운드 모드로 시작
docker-compose up -d

 

서비스 중지 및 제거


  
# 컨테이너 중지 및 네트워크 제거
docker-compose down
# 볼륨까지 함께 제거
docker-compose down -v

 

완성된 docker-compose.yaml 예시


  
version: "3.8"
services:
mongodb:
image: 'mongo'
volumes:
- data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: max
MONGO_INITDB_ROOT_PASSWORD: secret
# 또는 환경변수 파일 사용
env_file:
- ./env/mongo.env
backend:
build: ./backend
# 또는 더 상세한 빌드 설정
# build:
# context: ./backend
# dockerfile: Dockerfile
# args:
# some-arg: 1
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:

 

주요 구성 요소 설명

  1. 빌드 옵션
    • build: ./path: 이미지 빌드 경로 지정
    • context: Dockerfile이 참조할 수 있는 컨텍스트 설정
    • dockerfile: 사용할 Dockerfile 지정
    • args: 빌드 인수 전달
  2. 의존성 관리
    • depends_on: 서비스 간 의존성 설정
    • 지정된 서비스가 먼저 시작된 후 현재 서비스 시작
  3. 대화형 설정
    • stdin_open: true: -i 플래그 역할 (표준 입력 유지)
    • tty: true: -t 플래그 역할 (터미널 할당)
    • React 앱에 필요한 설정

 

 

이미지 빌드와 컨테이너 이름 관리

이미지 빌드 관련 명령어

재빌드 옵션으로 서비스 시작


  
docker-compose up --build
  • 이미지 강제 재빌드 후 컨테이너 실행
  • 소스 코드 변경 후 사용하면 유용

 

빌드만 수행


  
docker-compose build
  • 컨테이너 실행 없이 이미지만 빌드
  • 빌드 결과 확인에 유용

 

컨테이너 이름 관리

기본 이름 지정 규칙

  • 형식: 프로젝트폴더명_서비스명_번호
  • 예: docker-complete_mongodb_1
  • 번호는 동일 서비스의 여러 컨테이너 구분용

 

사용자 정의 컨테이너 이름


  
services:
mongodb:
image: 'mongo'
container_name: mongodb
  • container_name 옵션으로 고정 이름 지정
  • 주의: 고정 이름 사용 시 동일 서비스의 복수 컨테이너 실행 불가

 

사용 예시


  
version: "3.8"
services:
mongodb:
image: 'mongo'
container_name: mongodb-container
# 기타 설정...
backend:
build: ./backend
container_name: backend-container
# 기타 설정...
frontend:
build: ./frontend
container_name: frontend-container
# 기타 설정...

 

Docker Compose를 사용하면 이러한 복잡한 설정을 단일 파일로 관리하고,

간단한 명령어로 전체 애플리케이션 환경을 제어할 수 있습니다.

 

 

 

 

참고

https://www.udemy.com/course/docker-kubernetes-2022

728x90
반응형

댓글