Dev etc/etc

[Docker] 도커 컴포즈(Docker Compose)란 ?

콩다영 2023. 6. 23.
728x90
Docker Compose
한 번에 여러 개의 container를 통합 관리 및 운용하기 위한 도구
멀티 컨테이너의 동시 운용 시 컨테이너별 별도의 설정들을 간편하게 작업 가능

 

 

▷ 도커 컴포즈의 기본적인 3가지 절차

  1. Dockerfile 정의 : 앱 환경 설정
    • 애플리케이션에서 필요한 환경을 Dockerfile에 정의함
  2. docker-compose.yml 설정 : 앱과 같이 수행될 서비스 설정
    • 앱에서 필요한 각 서비스들을 dockerp-compose.yml에 정의함
    • 이 파일을 이용해서 각 서비스들이 독립된 환경에서 함께 실행될 수 있음
  3. docker-compose up을 통한 전체 앱 실행
    • docker-compose up을 하면 Compose가 알아서 전체 앱에 필요한 서비스들을 실행함

 

 

▷ Docker Compose 활용

  • 단일 호스트상, 다수의 독립 환경 운용
  • 컨테이너 볼륨의 보존
  • 변경된 컨테이너의 재생성
  • Variables and moving a composition between environments

 

 

▷ Docker Compose 명령은 여러 개의 컨테이너 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성함

▷ Docker Compose의 설정 파일(docker-compose.yml)은 run 명령어 옵션을 그대로 사용할 수 있으며

     각 컨테이너의 의존성, 네트워크, 볼륨, 컨테이너 수 등을 유동적으로 조절할 수 있음

      ex) 파이썬 프로그램이 구동되는 컨테이너와 데이터를 저장하는 redis 서버, 웹서버 컨테이너를 실행한다고 할 때,

            각각의 run 명령어 및 다양한 옵션으로 컨테이너를 생성하고 테스트하기에는 매우 번거로움

            → Docker Compose를 활용하면 편리함

 

 

 

 

▷ docker-compose.yml 파일 구조

version:"3"
services:
	web:
    	build:,
        volumes:
        	-web-data:/var/www/data
    redis:
    	image: redis:alpine
        parts:
        	-"6379"
        networks:
        	-default

[ docker-compose.yml 예시 파일]

: docker-compose.yml 파일에는 image나 build 지시자가 반드시 있어야 함

 

 

 image   

- 사용할 이미지의 태그나 ID를 명시함

- 로컬에 그 이미지가 없으면 원격저장소에서 pull해서 가져옴

 build   

- Dockerfile이 있는 디렉토리의 경로

- compose가 이 경로에 있는 Dockerfile을 빌드해서 사용함

 dockerfile   

- 기본 Dockerfile이 아니라 여기에 지정된 파일명을 Dockerfile로 인식해서 빌드해서 사용함

 

 

 

728x90
반응형

댓글