728x90
Docker Compose란?
Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하는 도구입니다. 이를 통해 여러 개의 Docker 컨테이너를 함께 관리하고 쉽게 설정할 수 있습니다. 예를 들어, 웹 애플리케이션이 프론트엔드, 백엔드, 데이터베이스 등 여러 구성 요소로 나뉘어 있다면 각각의 구성 요소를 독립된 컨테이너로 실행하는데, 이를 효율적으로 관리하기 위해 Docker Compose를 사용할 수 있습니다.
주요 기능:
- 다중 컨테이너 애플리케이션 정의: 여러 개의 서비스를 정의하고 이를 하나의 YAML 파일 (docker-compose.yml)로 관리할 수 있습니다.
- 다중 환경 지원: 개발, 테스트, 프로덕션 환경에 맞게 각기 다른 설정을 쉽게 적용할 수 있습니다.
- 종속성 관리: 컨테이너 간의 의존성을 정의하여 특정 컨테이너가 실행되기 전에 필요한 다른 컨테이너가 먼저 실행되도록 관리합니다.
- 명령어 단순화: 여러 컨테이너를 각각 실행하는 대신 docker-compose up 명령어 하나로 모든 컨테이너를 동시에 실행할 수 있습니다.
Docker Compose 구성 파일 (docker-compose.yml) 구조
docker-compose.yml 파일은 YAML 포맷을 사용하여 애플리케이션의 여러 서비스를 정의합니다. 기본 구조는 다음과 같습니다:
version: '3' # 사용하고자 하는 Compose 파일 버전
services:
web:
image: nginx # 웹 서버에 사용할 이미지
ports:
- "8080:80" # 호스트의 8080 포트를 컨테이너의 80 포트로 연결
db:
image: mysql # 데이터베이스에 사용할 이미지
environment:
MYSQL_ROOT_PASSWORD: example # 환경 변수 설정
volumes:
- db_data:/var/lib/mysql # 데이터 저장을 위한 볼륨 설정
volumes:
db_data: # 데이터베이스 데이터 저장을 위한 볼륨
Docker Compose 사용 예시
간단한 웹 애플리케이션 예시 (Nginx와 MySQL)
Nginx 웹 서버와 MySQL 데이터베이스를 사용하여 간단한 웹 애플리케이션 환경을 구성합니다.
1. 프로젝트 디렉터리 생성
mkdir myapp
cd myapp
2. docker-compose.yml 파일 작성 다음은 웹 서버(Nginx)와 데이터베이스(MySQL)를 실행하는 구성 예시입니다.
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
- web: Nginx 웹 서버를 실행하며, 호스트의 ./html 디렉토리를 컨테이너의 /usr/share/nginx/html에 마운트하여 웹 파일을 제공.
- db: MySQL 데이터베이스를 실행하며, MYSQL_ROOT_PASSWORD 환경 변수를 통해 루트 비밀번호를 설정.
- depends_on: web 서비스가 db 서비스에 의존한다는 것을 명시. 즉, db가 먼저 실행된 후 web이 실행됨.
3. 웹 파일 준비 ./html 디렉토리를 만들고, 간단한 HTML 파일을 넣어봅니다.
mkdir html
echo "<h1>Hello Docker Compose</h1>" > html/index.html
4. Docker Compose 실행
다음 명령어로 모든 컨테이너를 실행할 수 있습니다.
docker-compose up
- docker-compose up 명령어는 docker-compose.yml 파일에 정의된 모든 컨테이너를 실행합니다.
- 웹 브라우저에서 http://localhost:8080으로 접속하면 Hello Docker Compose라는 메시지가 보입니다.
5. 백그라운드 실행
백그라운드에서 애플리케이션을 실행하려면 -d 옵션을 사용합니다.
docker-compose up -d
6. 컨테이너 중지 및 제거
모든 컨테이너를 중지하고 제거하려면 다음 명령어를 사용합니다.
docker-compose down
728x90
'Docker' 카테고리의 다른 글
[Docker] 명령어 (계속 추가) (0) | 2024.08.29 |
---|---|
Docker? (0) | 2024.08.27 |