안녕하세요, 개발자 여러분!
Docker를 활용하다 보면 컨테이너 하나만 사용하는 게 아니라 여러 컨테이너를 조합해서 복잡한 애플리케이션을 운영해야 하는 경우가 많습니다. 이때 등장하는 최고의 도구가 바로 Docker Compose입니다. 오늘은 이 도구가 왜 필요한지, 기존 방식과 비교해 얼마나 개선되었는지, 그리고 어떻게 사용하는지 살펴보겠습니다.
Docker Compose란?
이전에는 어땠나요?
Docker 없이 복잡한 애플리케이션을 실행하려면 각 구성 요소(예: 데이터베이스, 웹 서버, 캐시 서버 등)를 개별적으로 설정하고 실행해야 했습니다. Docker 등장 이후에도 각 컨테이너를 수동으로 관리하는 작업은 여전히 번거로웠습니다.
Docker Compose로 어떻게 좋아졌을까요?
Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 단순한 YAML 파일 하나로 정의하고 관리할 수 있도록 도와줍니다.
예를 들어, 데이터베이스, 웹 서버, 로드 밸런서를 동시에 실행하려면 이전에는 각 컨테이너를 개별적으로 실행해야 했지만, Compose를 사용하면 단일 명령어로 모든 서비스를 시작할 수 있습니다.
왜 Docker Compose를 써야 할까요?
- 간편한 관리
YAML 파일 하나로 여러 컨테이너를 정의하고 관리할 수 있습니다.위 설정만 있으면 docker-compose up으로 간단히 실행됩니다. - services: web: image: nginx db: image: postgres
- 재현 가능한 환경
개발, 스테이징, 프로덕션 환경을 동일하게 유지할 수 있습니다.- 예: 로컬에서 동작하는 애플리케이션이 프로덕션에서도 동일하게 작동합니다.
- 빠른 배포와 스케일링
설정된 서비스를 수 초 만에 배포하고, docker-compose scale로 손쉽게 컨테이너 수를 조정할 수 있습니다.- 예: docker-compose up --scale web=5로 웹 서버 컨테이너를 5개로 늘릴 수 있습니다.
- 버전 관리와 협업
설정 파일을 Git으로 관리할 수 있어 협업이 쉽습니다.- 팀원이 동일한 환경에서 작업할 수 있습니다.
Docker Compose 사용법
1. 설치하기
Docker Desktop을 설치하면 기본적으로 포함되어 있습니다.
리눅스 환경에서 따로 설치하려면 아래 명령어를 사용하세요:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
설치 후 아래 명령어로 버전을 확인하세요:
docker-compose --version
2. docker-compose.yml 파일 만들기
프로젝트의 루트 디렉토리에 docker-compose.yml 파일을 생성합니다.
간단한 웹 애플리케이션과 데이터베이스 설정 예제:
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
3. 실행하기
docker-compose.yml 파일이 있는 디렉토리에서 아래 명령어를 실행하면 모든 서비스가 실행됩니다:
docker-compose up
백그라운드에서 실행하려면 -d 옵션을 추가하세요:
docker-compose up -d
4. 멈추기
실행 중인 모든 서비스를 멈추고 컨테이너를 정리하려면:
docker-compose down
실제 사용 예: WordPress 블로그 구축
WordPress와 MySQL을 사용하는 블로그를 Compose로 설정해보겠습니다.
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data: {}
위 파일을 저장한 후 아래 명령어를 실행하면 WordPress 블로그가 실행됩니다:
docker-compose up -d
브라우저에서 http://localhost:8000에 접속해 WordPress 설치를 진행하세요.
주의할 점
- 보안:
비밀번호나 민감한 정보는 .env 파일에 저장하고 docker-compose.yml에서 불러오세요. - environment: POSTGRES_PASSWORD: ${DB_PASSWORD}
- 볼륨 관리:
데이터는 볼륨을 통해 저장하므로 컨테이너를 삭제해도 데이터는 유지됩니다. 하지만 불필요한 볼륨은 주기적으로 정리하세요. - 네트워크 설정:
컨테이너 간 통신이 원활하도록 네트워크 설정을 확인하세요. 기본적으로 Compose는 각 서비스가 같은 네트워크에서 통신하도록 설정됩니다.
유용한 링크 모음
'개발 이야기 > 기타' 카테고리의 다른 글
다양한 운영체제에서 SHA-256 해시 계산하는 방법 정리 (0) | 2024.12.12 |
---|---|
리눅스 텍스트 검색의 핵심, grep 가이드: 기초부터 고급 활용까지 (0) | 2024.12.10 |
리눅스 아카이빙의 기본기, tar 가이드: 기초 문법부터 고급 활용까지 (0) | 2024.12.10 |
GitHub과 GitLab의 LFS로 대용량 파일 다루기: 개발자의 비밀 무기! (0) | 2024.12.06 |
Docker 이미지와 tar 파일: 내보내기와 가져오기 완전 정복! (1) | 2024.12.06 |