도커 컴포즈는 여러 개의 컨테이너를 사용할 때 서로 통신하고 이 컨테이너들을 모아서 관리하는 것을 말한다. 쉽게 말하면 프로젝트 a에 사용하는 redis 컨테이너, server 컨테이너 등등 하나로 깔끔하게 관리할 수 있도록 해주는 것이다.
도커 컴포즈 파일은 docker-compose.yml
이며 yml 형식대로 작성해주면 된다.
version: '3'
services:
redis-server: #컨테이너 이름
image: "redis" #이미지
docker-compose-app: # 컨테이너 이름
build: .# 이 디렉토리에 있는 Dockerfile 사용
ports:
- "12345:8080" # 로컬 호스트 포트:컨테이너 포트
version: '3'
으로 명시할 것이다. 이말은 3으로 시작하는 최신 버전을 사용한다는 걸 의미한다.docker-compose up
docker-compose.yml이 있는 디렉토리에서 이 명령어를 실행하면 된다.
--build
가 없는 경우 이미지가 없을때에만 이미지를 빌드하고 컨테이너를 시작한다. 그와 반대로 --build
가 있는 명령어는 이미지 유무에 상관없이 빌드하고 컨테이너를 시작한다는 차이점이 있다.
즉, 컨테이너를 실행하고 소스코드를 수정하고 다시 도커 컴포즈로 컨테이너를 재시작할 때에는 이 명령어를 사용해 컨테이너를 시작해야 한다.
docker-compose stop
마찬가지로 docker-compose.yml 파일이 있는 디렉토리에서 실행해야 한다.
docker-compose down
컨네이너 중지후 컨테이너와 네트워크까지 삭제해준다.