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:
주요 구성 요소 설명
- 빌드 옵션
- build: ./path: 이미지 빌드 경로 지정
- context: Dockerfile이 참조할 수 있는 컨텍스트 설정
- dockerfile: 사용할 Dockerfile 지정
- args: 빌드 인수 전달
- 의존성 관리
- depends_on: 서비스 간 의존성 설정
- 지정된 서비스가 먼저 시작된 후 현재 서비스 시작
- 대화형 설정
- 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를 사용하면 이러한 복잡한 설정을 단일 파일로 관리하고,
간단한 명령어로 전체 애플리케이션 환경을 제어할 수 있습니다.
참고
728x90
반응형
'강의 > Docker & Kubernetes : 실전 가이드' 카테고리의 다른 글
[114] Target 설정 (1) | 2025.03.26 |
---|---|
[104-112] 유틸리티 컨테이너에 대해서 (0) | 2025.03.24 |
[95, 96] Docker Compose 파일 만들기 (0) | 2025.03.15 |
[94] Docker Compose : 무엇이며 왜 사용하는가? (0) | 2025.03.13 |
[90] 바인드 마운트로 React 컨테이너에 대한 라이브 소스 코드 업데이트하기 (0) | 2025.03.10 |
댓글