Docker compose

홍석희·2024년 1월 3일
0

docker

목록 보기
5/6
post-thumbnail

참고 자료:
https://docs.docker.com/compose/
https://docs.docker.com/compose/features-uses/

Docker compose 는 여러개의 컨테이너로 구성된 애플리케이션을 정의하고 실행하기 위한 관리 도구
YAML 파일을 사용하여 애플리케이션 서비스들을 구성하고, 명령어를 통해 구성한 모든 서비스들을 생성하고 실행할 수 있다.

Compose에는 애플리케이션의 모든 생명주기를 관리할 수 있는 명령어들이 존재한다.

  • 서비스들의 start, stop, rebuild
  • 실행중인 서비스들의 상태 보기
  • 실해중인 서비스들의 출력 확인
  • 일회성 명령어 실행

Docker compose 과정

  1. Dockerfile 을 활용하여 애플리케이션 환경 정의
  2. 애플리케이션에 필요한 컨테이너들을 compose.yaml 파일에 정의, 독립된 환경에서 여러 개의 컨테이너들을 같이 실행할 수 있음
  3. 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 옵션과 함께 사용하면 볼륨 데이터도 함꼐 삭제됨

Docker Compose 특징

  • 하나의 host에서 여러 개의 독립된 환경 구성

  • 컨테이너가 생성되면 볼륨 데이터 보존

    • docker compose up 명령어가 실행되면 이전에 실행된 컨테이너를 찾고, 이전 컨테이너에서 새 컨테이너로 볼륨 데이터를 복사한다
    • 이러한 과정을 통해 볼륨 안에 생성한 데이터들을 잃지 않음을 보장
  • 변경이 발생했을 때만 컨테이너를 재생성

    • 컨테이너를 생성할 때 Compse cache를 사용
    • 서비스를 재시작할 때 변경이 없다면 존재하는 컨테이너를 재사용한다
profile
개발 기록

0개의 댓글