도커 컴포즈(Docker-Compose.yml) 란 무엇일까 ?
[ 이전 게시글 ]
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. 도커 컴포즈 내부 구조
(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
도커 컴포즈 정보 확인