Docker

도커 컴포즈(Docker-Compose.yml) 란 무엇일까 ?

개발자 김상복 2024. 1. 29. 16:48

 

[ 이전 게시글 ]

 

https://sangbok-diary.tistory.com/24

 

도커로 Node.js 사용해보기

[ 이전 포스팅 ] https://sangbok-diary.tistory.com/23 도커 사용자 정의 이미지 [ 이전 게시글 ] https://sangbok-diary.tistory.com/22 도커 기본 사용방법에 대해서 알아보자 도커 사용법에 대해서 조금 더 알아보도

sangbok-diary.tistory.com

 

 

[ 참고 블로그 ]

 

https://seosh817.tistory.com/387

 

[Docker] 도커 컴포즈(Docker compose) - 개념 정리 및 사용법

이번 포스트에서는 도커 컴포즈에 대해 정리하겠습니다. 도커 컴포즈란? 도커 컴포즈는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업

seosh817.tistory.com

 

 


 

 

1. 도커 컴포즈란 ?

 

도커 컴포즈란 도커의 여러 컨테이너를 하나로 컨트롤 할 수 있도록 도와주는 도구입니다.

 

서비스할 컨테이너들을 docker-compose.yml 이라는 파일에 세팅해두면 자동으로 빌드, 실행을 해준다

 

 

이전까지는 docker run [이미지 이름] 을 실행해왔다.

 

하지만 만약 redis, node 와 같은 다양한 프로그램을 일일히 이렇게 내려받고 실행한다면

굉장히 번거롭고 관리하기 힘들것이다

 

그렇기에 도커 컴포즈를 활용하여 한번에 관리한다고 생각하면된다.

 

 

2. 도커 컴포즈 내부 구조

 

 

docker-compose.yml

 

 

(1) 버전

 

version 은 도커 컴포즈의 버전을 작성한다.

프로젝트에 맞춰서 버전 설정을 하면 되겠지만, 보통은 최신 버전을 추천한다

 

 

(2) 서비스

 

services는 복수형으로 알 수 있듯 서비스할 컨테이너들을 묶어 놓는 하나의 대분류 이다

 

 

(3) redis-server, node-app

 

서비스의 이름

 

 

(4) image 

 

서비스 컨테이너의 이름으로써 docker run과 동일하며 이미지가 도커에 없을 시 자동으로 허브에서 내려받습니다

 

 

(5) restart

 

restart에서는 도커가 충돌을 일으켜서 문제가 있을 시 판단을 설정을 합니다

 

* no : 재시작 하지 않음

* always : exit code와 상관 없이 항상 재시작

* on-failure : exit code가 0(정상적인 종료) 인 경우가 아닌 오류 발생으로 일 시 재시작

* unless-stopped : 컨테이너 상태를 수동으로 stop 하기 전까지 재시작

 

 

(6) ports

 

개방할 포트를 설정한다. 나의 경우 4000 포트로 접속 시 8081번을 뱉어낸다

 

 

(7) build

 

build 에 정의된 도커파일에서 이미지를 빌드하여 컨테이너를 생성합니다

* [ . ] (닷) 의 경우 해당 파일의 도커 파일을 의미합니다 

 

 

 

* 그외 다양한 세팅 언어들은 위 블로그를 참조하면 좋을 것 같습니다.

 

 

 

3. 도커 컴포즈 명령어

 

 

(1) docker-compose up 

 

도커 컴포즈를 빌드, 실행합니다

 

 

(2) docker-compose up --build

 

캐시에 저장 된 도커 컴포즈가 존재하여도 재빌드, 실행합니다

 

 

(3) docker-compose up -d

 

up과 동일하나 서버 실행을 백그라운드에서 진행합니다

 

 

(4) docker-compose down 

 

도커 컴포즈를 중지

 

 

(5) docker-compose ps

 

도커 컴포즈 정보 확인