Docker, docker-compose 사용법
`docker-compose`는 여러 Docker 컨테이너를 정의하고 관리하기 위한 도구입니다. `docker-compose.yml` 파일을 사용하여 컨테이너, 네트워크, 볼륨 등의 설정을 기술할 수 있습니다. 이를 통해 애플리케이션과 관련된 모든 서비스를 한 번에 관리할 수 있습니다.
1. `docker-compose.yml` 파일 작성
`docker-compose.yml` 파일은 YAML 문법을 사용하며, 각 서비스, 네트워크, 볼륨 등의 설정을 포함합니다. 간단한 예시는 다음과 같습니다.
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: mypassword
이 예시에서는 두 개의 서비스(web 및 db)를 정의하고 있습니다. 각 서비스는 Docker 이미지를 기반으로 하며, 추가 설정이 있을 경우 그에 맞추어 구성됩니다.
2. 주요 `docker-compose.yml` 구성 요소
- `version`: Docker Compose 파일 형식의 버전입니다. '3' 또는 '3.x'와 같은 형식을 사용합니다.
- `services`: 애플리케이션의 서비스 목록입니다. 여기에 각 서비스에 대한 설정을 기술합니다.
- `image`: 서비스를 실행하는 데 사용되는 Docker 이미지입니다.
- `build`: 이미지를 빌드하기 위한 Dockerfile이 있는 경로를 지정합니다.
- `ports`: 호스트와 컨테이너 간의 포트 매핑을 설정합니다. 외부에 노출될 포트를 지정합니다.
- `volumes`: 호스트와 컨테이너 간의 볼륨 매핑을 설정합니다. 파일 시스템을 공유할 수 있습니다.
- `environment`: 컨테이너에서 사용할 환경 변수를 설정합니다.
- `depends_on`: 서비스 간의 의존성을 설정합니다. 다른 서비스가 실행된 후에 현재 서비스가 실행됩니다.
- `networks`: 사용할 네트워크를 설정합니다. 사용자 정의 네트워크를 생성할 수도 있습니다.
3. 주요 `docker-compose` 명령어
- `docker-compose up`: `docker-compose.yml` 파일에 정의된 서비스를 시작하거나 업데이트합니다. `-d` 플래그를 사용하면 백그라운드에서 실행할 수 있습니다.
docker-compose up -d
- `docker-compose down`: `docker-compose.yml` 파일에 정의된 서비스를 중지하고 관련 리소스를 제거합니다. 네트워크, 볼륨 등의 리소스도 함께 삭제합니다.
docker-compose down
- `docker-compose ps`: `docker-compose.yml` 파일에 정의된 서비스의 상태를 확인합니다.
docker-compose ps
- `docker-compose logs`: `docker-compose.yml` 파일에 정의된 서비스의 로그를 출력합니다. 특정 서비스의 로그만 확인하려면 서비스 이름을 지정할 수 있습니다.
docker-compose logs [service_name]
- `docker-compose pull`: `docker-compose.yml` 파일에 정의된 서비스의 이미지를 가져옵니다.
docker-compose pull
- `docker-compose build`: `docker-compose.yml` 파일에 정의된 서비스를 빌드합니다. `build` 키를 사용하여 Dockerfile의 위치를 지정해야 합니다.
docker-compose build
- `docker-compose exec`: 실행 중인 컨테이너에서 명령어를 실행합니다. 서비스 이름과 실행할 명령어를 지정해야 합니다.
docker-compose exec [service_name] [command]
- `docker-compose stop`: `docker-compose.yml` 파일에 정의된 서비스를 중지합니다. 서비스를 제거하지 않고 일시 중지할 수 있습니다.
docker-compose stop
- `docker-compose start`: 이전에 중지된 서비스를 다시 시작합니다.
docker-compose start
`docker-compose`를 사용하면 여러 서비스로 구성된 애플리케이션을 한 번에 관리할 수 있습니다. 이를 통해 개발, 테스트, 배포 등의 작업을 효율적으로 수행할 수 있습니다.