Docker
Docker - Compose
최 수빈
2025. 2. 19. 02:57
Docker Compose
여러 개의 컨테이너를 하나의 구성 파일(docker-compose.yml)로 관리
docker-compose up 한 번으로 여러 컨테이너 실행 가능
- Django + PostgreSQL 같이 여러 개의 컨테이너를 운영할 때 사용
- docker-compose.yml 파일을 활용, 컨테이너 설정을 자동화
.dockerignore
불필요한 파일이 이미지에 포함되는 것을 방지(예: node_modules, .git)
Dockerfile과 동일한 디렉토리에 위치
__pycache__/
*.pyc
node_modules/
.env
예제: Django + PostgreSQL 컨테이너 설정
Docker Compose 설정 파일 (docker-compose.yml)
version: '3.8'
services:
web:
build:
context: .
ports:
- "8000:8000"
volumes:
- /Users/choisubin/back_to_the_zero:/back_to_the_zero
environment:
- DJANGO_SETTINGS_MODULE=back_to_the_zero.settings
- DATABASE_URL=postgres://postgres:password@db:5432/postgres
depends_on:
- db
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: postgres
volumes:
db_data:
- web: Django 애플리케이션 서비스
- db: PostgreSQL 데이터베이스 서비스
- depends_on: db가 먼저 실행된 후 web 실행
Docker Compose 실행
컨테이너 실행
docker-compose up -d
• -d 옵션을 추가하면 백그라운드 실행
컨테이너 중지
docker-compose down
실행 중인 컨테이너 확인
docker-compose ps
docker-compose up | docker-compose.yml에 정의된 모든 컨테이너 실행 |
docker-compose down | 모든 컨테이너 중지 및 네트워크 삭제 |
docker-compose ps | 실행 중인 서비스 확인 |
docker-compose logs 서비스명 | 특정 서비스 로그 확인 |
docker-compose exec 서비스명 bash | 서비스 내부 접속 |
*Volume (데이터 저장)
컨테이너는 기본적으로 휘발성(삭제되면 데이터도 사라짐)
Volume을 사용하면 데이터를 영구적으로 저장가능
volumes:
db_data:
호스트 경로와 컨테이너 내부 경로 매핑
volumes:
- ./myapp:/myapp
volumes:
- ./로컬경로:/컨테이너내부경로
호스트의 myapp 폴더와 컨테이너의 /myapp 폴더를 동기화
DB 컨테이너 활용
DB 이미지는 공식적으로 제공되므로 별도의 빌드 없이 바로 사용 가능
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: postgres