참고 자료:
https://docs.docker.com/compose/
https://docs.docker.com/compose/features-uses/
Docker compose
는 여러개의 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 관리 도구
YAML 파일
을 사용하여 애플리케이션 서비스들을 구성하고, 명령어를 통해 구성한 모든 서비스들을 생성하고 실행할 수 있다.
Compose에는 애플리케이션의 모든 생명주기를 관리할 수 있는 명령어들이 존재한다.
Dockerfile
을 활용하여 애플리케이션 환경 정의compose.yaml
파일에 정의, 독립된 환경에서 여러 개의 컨테이너들을 같이 실행할 수 있음docker compose up
명령어를 사용하여 전체 애플리케이션을 실행compose.yaml
파일 예시
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"
web
서비스: 현재 디렉토리의 Dockerfile로부터 생성된 이미지 사용, build .
은 현재 디렉토리의 Dockerfile을 통해 이미지를 빌드. port
를 사용하여 로컬 호스트와 컨테이너 포트를 연결. volumes
를 사용하여 로컬 저장소와 컨테이너 경로 매칭
redis
서비스: redis 이미지 사용, 로컬 이미지 캐시에 없다면 docker hub에서 pull
docker compose stop
: docker compose up -d
명령어로 백그라운드에서 실행되는 어플리케이션 중지
docker compose down
애플리케이션 중지, 컨테이너 삭제. --volumes
옵션과 함께 사용하면 볼륨 데이터도 함꼐 삭제됨
하나의 host에서 여러 개의 독립된 환경 구성
컨테이너가 생성되면 볼륨 데이터 보존
docker compose up
명령어가 실행되면 이전에 실행된 컨테이너를 찾고, 이전 컨테이너에서 새 컨테이너로 볼륨 데이터를 복사한다변경이 발생했을 때만 컨테이너를 재생성