Docker Compose란
1. 개념
- 여러 개의 Docker Container들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있는 하나의 애플리케이션을 만드는 것입니다.
2. 특징
- 서비스들을 시작하고 중지하고 재 빌드합니다.
- 여기서 말하는 서비스는 컨테이너에서 돌아가는 애플리케이션을 의미합니다. 단일 서비스(컨테이너)가 아닌 복수의 서비스(컨테이너)를 시작하고 중지하고 다시 빌드한다고 볼 수 있습니다.
- 실행 중인 서비스의 상태를 볼 수 있습니다.
- 로그 출력을 포함하여 실행 중인 모든 서비스의 상태를 쉽게 볼 수 있습니다.
- 실행 중인 서비스의 로그를 스트림 할 수 있습니다.
- 두 번째와 비슷한 특징이라고 생각할 수 있습니다. Docker Compose를 이용하면 로그를 가져오기 위해 컨테이너별로 명령을 수행할 필요 없습니다.
- 하나의 서비스에 일회성 작업을 수행할 수 있습니다.
- 당연하게 생각될 수 있는데 항상 모든 컨테이너를 묶어서 작업해야 할 필요는 없습니다. 경우에 따라서 단일 컨테이너에 명령을 내릴 필요가 있습니다.
그럴 때, Docker Compose에서 단일 컨테이너에 접근하여 해당 컨테이너 로그를 확인하거나 컨테이너 시작 및 중지, 이미지를 빌드할 수 있습니다.
- 당연하게 생각될 수 있는데 항상 모든 컨테이너를 묶어서 작업해야 할 필요는 없습니다. 경우에 따라서 단일 컨테이너에 명령을 내릴 필요가 있습니다.
3. 사용하기 위한 과정
- Docker Compose 파일 작성 : YAML 형식으로 작성된 Docker Compose 파일을 사용해 서비스와 관련 설정들을 정의합니다.
- Docker Compose 실행 : docker-compose up 명령어를 사용하여 Docker Compose 파일에 정의된 서비스들을 시작합니다.
- 실행 및 관리 : 실행된 서비스를 확인하고 관리하기 위해 docker-compose ps, docker-compose logs, docker-compose exec 등의 명령어를 사용합니다.
- 중지 및 정리 : 작업을 완료한 후 docker-compose down 명령어를 사용하여 Docker Compose 파일에 정의된 서비스들을 중지하고 관련 컨테이너들을 삭제합니다.
4. 파일 작성
version: 'version'
services:
web:
build: .
image: "SpringBootTest:version"
ports:
- "port:port"
depends_on:
- db
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:port/DBName
SPRING_DATASOURCE_USERNAME: DBUserName
SPRING_DATASOURCE_PASSWORD: password
db:
image: "DataBaseTest:version"
ports:
- "port:port"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: DBName
- version : Docker Compose 파일 버전입니다.
- services : Docker Compose에서 관리할 서비스 목록 정의입니다.
- web : 첫 번째 서비스로, 자바 웹 애플리케이션을 포함한 Spring Boot 이미지를 사용하겠다는 의미입니다.
- build : 이미지를 빌드할 디렉터리를 지정합니다.
- image : 빌드한 이미지 이름을 지정합니다.
- ports : 호스트와 컨테이너 간의 포트를 매핑합니다.
- depends_on : 이 서비스가 시작되기 전에 필요한 의존 서비스를 지정합니다.
- environment : 필요한 환경 변수를 지정합니다.
- web : 첫 번째 서비스로, 자바 웹 애플리케이션을 포함한 Spring Boot 이미지를 사용하겠다는 의미입니다.
- db : 두 번째 서비스로, 데이터 베이스 이미지를 사용하겠다는 의미입니다.
- image : 원하는 데이터 베이스 이미지를 사용하고, 그 데이터 베이스의 버전을 선택한다는 의미입니다.
- ports : 호스트와 컨테이너 간의 포트를 매핑합니다.
- environment : 필요한 환경 변수를 지정합니다.
5. 기본 명령어
- docker-compose up -d
도커 컴포즈 컨테이너들 백그라운드로 실행합니다. - docker-compose up
도커 컴포즈 컨테이너들 포어그라운드로 실행합니다. - docker-compose down
도커 컴포즈 컨테이너들 종료합니다. - docker-compose restart
도커 컴포즈 컨테이너들 다시 시작합니다. - docker-compose logs -f
도커 컴포즈 컨테이너들 로그 읽습니다. - docker-compose ps
도커 컴포즈 컨테이너들 상태 확인합니다. - docker-compose config
도커 컴포즈 설정을 확인합니다.
(주로 -f 옵션으로 여러 개 설정 파일을 사용할 때, 최종적으로 어떻게 설정이 적용되는지 확인) - docker-compose -f /app/docker-compose.yml up
다른 경로에 있는 도커 컴포즈 파일 사용 도커 컴포즈로 다른 이름이나 경로의 파일을 Docker Compose 설정 파일로 사용하고 싶다면 -f 옵션으로 명시합니다. - dockercompose -f docker-compose1.yml -f docker-compose2.yml up
여러 개의 도커 컴포즈 설정 파일을 사용할 수 있으며, 이 때 나중에 나오는 설정이 앞 설정보다 우선으로 적용됩니다.
'Technology > Docker' 카테고리의 다른 글
[Docker] - 도커(Docker) port 충돌 해결 방법 (0) | 2025.03.12 |
---|---|
[Docker] - 도커(Docker) 개념 및 정의, 운영체제별 활용 방법 (0) | 2025.02.27 |
[Docker] - 도커(Docker) 이미지 컨테이너 볼륨이란? (0) | 2025.02.27 |
[Docker] - Docker Prune 명령어 정리 (0) | 2024.04.08 |
[Docker] - Docker(도커)란? (0) | 2024.03.20 |