Docker-compose
Docker compose란?
- 다수의 컨테이너 운용을 용이하게 하기 위한 툴이다.
- yaml 파일 형태로 작성되며, 다수의 컨테이너 실행 관리를 가능케 한다.
- 일일이 커맨드를 입력하는 것이 아닌, 파일 하나로 docker 사용을 간편케 한다.
- 간단하게 정리하자면,
dockerfile
로 컨테이너의 세팅환경을 만들어준 후 docker-compose.yml
파일로 컨테이너들을 관리해준다.
Docker-compose 세팅
docker-compose.yml 파일 세팅
# docker-compose.yml
version: "3" # 도커 컴포즈 버전
services: # 실행하려는 컨테이너들을 정의
docker_compose_test: # 컨테이너 이름
build: # build 옵션(이미지 구성)
context: . # docker 이미지를 구성하기 위한 파일과 폴더들이 위치한 경로
dockerfile: dockerfile.dev # 도커 파일이 어떤것인지 지정
ports: # 포트 매핑 (로컬 포트 : 컨테이너 포트)
- "3000:3000"
volumes: # 로컬 머신에 있는 파일들을 매핑(docker volumne)
- /src/app/node_modules
- ./:/src/app
stdin_open: true # react app을 off할때 사용되는 옵션이다.
- 도커 볼륨을 사용하는 이유는 단순히 호스트 디렉토리에 있는 데이터를 특정 컨테이너에 실시간 반영한다는 목적이 아닌, 바로 컨테이너 내부 데이터의 보존이다. 컨테이너 내부에서 작업을 직접 진행하다가 컨테이너 자체가 사라졌을때 해당 데이터는 찾을 수 없게 된다. 하지만 해당 컨테이너를 호스트 디렉토리에 매핑시킴으로써 로컬에서 작업했을때 해당 소스 코드들이 컨테이너에 실시간으로 반영되고, 설사 컨테이너가 삭제되더라도 변경된 데이터는 호스트 디렉토리에 남게 되므로 데이터 보존을 가능케 한다.
docker-compose up
sudo docker-compose up --build
up
커맨드를 통해 컴포즈를 실행시킨다.
--build
: 컨테이너를 띄우기 전, 이미지를 새로 생성하기 위한 키워드이다. 소스 코드가 수정이 되었을 경우, 이미지를 다시 빌드해야하기 때문에 웬만하면 써주는 것이 좋다.
결과
![](https://images.velog.io/images/dydalsdl1414/post/86ed0d27-48c5-4798-b42c-15abce8c8f72/image.png)