우리네 장

[ Docker ] 도커 컴포즈 개념 알기 본문

배포 관리 도구/Docker

[ Docker ] 도커 컴포즈 개념 알기

qpmi1zm29 2023. 3. 2. 10:13

Docker compose는 다중 컨테이너로 구성된 도커 어플리케이션을 실행/중지 하기 위한 개념이다.

 

Docker compose 사용을 위해서는 docker-compose.yml 파일이 필요한데,

- Dockerfile : 현재 로컬 머신의 프로젝트를 docker를 이용해 이미지를 빌드하기 위한 파일

- docker-compose.yml : 다중 컨테이너들을 한 번에 실행할 때 컨테이너 끼리의 통신을 위한 설정 파일

이라고 생각하면 될 것 같다.

 

중요한 점은, 컨테이너들 끼리 통신하기 위해서는 반드시 설정이 필요한데, 멀티 컨테이너 네트워크 연결에 사용되는 것이 docker-compose.yml 파일이라는 점이다.

 

[ 표현하고자 하는 프로젝트 구조 ]

 

 

[ 완성된 docker-compose.yml 파일 ]

( yml 파일이라 들여쓰기가 중요하다 )

version : "3"      --도커 컴포즈도 버전이 존재한다.

services:

 redis-server :    --컨테이너 이름, 임의로 지정한다.

  image : "redis" --컨테이너에 사용하는 이미지

 node-app :         --컨테이너 이름, 여기서는 로컬 머신에 저장된 프로젝트

  build : .              -- build시에 Dockerfile이 필요하므로, Dockerfile의 경로를 나타낸 것이다. docker-compose.yml 파일 기                                   준이며, . 으로 표시는 현재 같은 디렉토리 경로에 파일이 존재한다는 의미이다.

 ports : 

   - "5000:8080"  -- port mapping, docker run 명령어시에 -p옵션을 사용해서 기동하지 않고 compose 파일에서 설정이 가                                 능  하다.

 

 

 

[ docker-compose 명령어 ]

** docker-compose 명령어는 docker-compose.yml 파일이 위치한 경로에서 실행해야 한다.

명령어에 따로 경로를 인자로 받는 부분이 존재하지 않는다. **

 

- docker-compose up : 시작

- docker-compose down : 종료

- docker-compose up -d --build

: -d 옵션 : detached의 약자로, attached의 반대, 컨테이너를 백그라운드에서 실행하며, 실행 결과를 보여주지 않는다. 연                    속  으로 하나의 터미널에서 다른 명령어 사용이 가능하다.

 --build 옵션 : up 명령어만 실행하면 이미 해당 이미지가 빌드 된 게 있으면 걔를 재사용해서 실행하는데,

                      해당 옵션을 주면 이미지 보유 여부와 상관 없이 무조건 다시 빌드해서 어플리케이션들을 실행한다.

                      소스코드 수정 시에는 위 옵션이 유용하므로 같이 사용해 주는게 좋다.

 

 

[ *간단 설명 - Redis 란? ]

온메모리 데이터 관리 시스템으로, key와 value 형태의 Nosql DB이다.

메모리 상에서 데이터를 관리하므로 속도가 빠르고, 영구적으로 데이터를 저장할 수 있는 방법도 존재한다고 한다.