지금까지는 1개의 컨테이너 앱을 구동시켰지만, 만약 DB, 캐싱, 메세지 큐 등 다른 서비스들을 많이 사용하게 된다면 싱글 컨테이너 안에서 실행할까요? 여러 컨테이너들을 동시에 실행시킬까요? 어떻게 컨테이너들끼리 연결시킬까요?
물론 docker run
명령어를 여러 컨테이너에서 실행시킬 수도 있지만, 네트워크들을 관리하고 여러 flag를 연결하는 등의 작업을 수행하려면, 여러 컨테이너들을 다시 다 종료시키는 과정도 불편하고 힘듦
Docker Compose를 통해, 하나의 YAML 파일에서 여러 컨테이너들을 정의할 수 있음. 하나의 명령어만으로 다수의 컨테이너들을 한 번에 실행시키고 종료시킬 수 있음
Compose가 선언적 도구임을 인지하는 것은 중요 : 정의하고, 실행하면 됨
내용을 바꾸고 그저 docker compose up
명령어를 실행시키면, compose가 변화들을 파일 내에서 재조정하고 적용시킴.
<aside> 💡
Dockerfile vs Compose file
Dockerfile은 컨테이너 이미지를 빌드하기 위한 지침을 제공 Compose file은 실행 컨테이너들을 정의
대부분, Compose file이 특정 서비스를 위한 이미지를 빌드하기 위해 Dockerfile을 참조
</aside>
Docker Desktop 실행
프로젝트로 이동
앱 실행 : docker compose up
docker compose up -d --build
앱 종료 : docker compose down
docker compose down
# 볼륨까지 삭제하는 명령
docker compose down --volumes