멀티 컨테이너 (Docker Compose)
실제 앱은 컨테이너 하나로 끝나지 않습니다. 웹·API·데이터베이스를 각각 띄우고 네트워크로 잇고 볼륨을 붙이는 일을 `docker run` 여러 번으로 하면 재현이 어렵습니다. Compose 는 이 구성을 YAML 파일 하나에 선언해 두고 `docker compose up` 한 번으로 전체를 세우며, 서비스 이름이 곧 네트워크 상의 호스트 이름이 됩니다.
01멀티 컨테이너 (Docker Compose)
개념 한눈에 보기실제 앱은 컨테이너 하나로 끝나지 않습니다. 웹·API·데이터베이스를 각각 띄우고 서로 잇는 일을 docker run 여러 번으로 하면 재현이 어렵습니다.
Compose 는 이 구성을 YAML 한 장에 선언해 둡니다. 명령의 나열이 아니라 '이런 상태였으면 좋겠다'는 선언입니다.
up 하면 먼저 이 프로젝트 전용 네트워크를 만들고 모든 서비스를 그 안에 띄웁니다.
서비스 이름이 그대로 DNS 이름이 됩니다. api 는 IP를 몰라도 환경변수 DB_HOST=db 만으로 데이터베이스에 붙습니다.
바깥으로 여는 포트는 web 하나뿐입니다. api 와 db 는 네트워크 안에서만 보이므로 외부에 노출되지 않습니다.
db 의 데이터는 pgdata 볼륨에 둡니다. 볼륨은 컨테이너 바깥에 있어서, compose down 으로 컨테이너를 전부 내려도 그대로 남습니다.
depends_on 은 기동 '순서'만 정합니다. db 컨테이너가 떴다는 것과 포스트그레스가 접속을 받을 준비가 됐다는 것은 다릅니다.
그래서 실제로는 헬스체크나 애플리케이션 쪽 재시도를 함께 둡니다. 순서만 믿으면 첫 기동에서 연결 실패가 납니다.
02 쉽게 이해하기
For Everyone여러 컨테이너의 구성을 YAML 한 장에 선언해 두고 한 번에 세웁니다. 서비스 이름이 그대로 네트워크 주소가 되고, depends_on 은 기동 순서만 정할 뿐 준비 완료를 보장하지 않습니다.
compose 파일에 서비스별 이미지·포트·환경변수·볼륨을 적으면, up 할 때 전용 네트워크를 만들고 각 서비스를 그 안에 띄웁니다.
서비스 이름이 DNS 이름이 되므로 API 는 `db:5432` 로 데이터베이스에 붙습니다.
depends_on 은 기동 순서만 정할 뿐 준비 완료를 보장하지 않아, 실제로는 헬스체크나 재시도를 함께 둡니다.
- –로컬 개발 환경 재현
- –통합 테스트 환경 구성
- –여러 서비스의 의존 관계·기동 순서 정의
- –팀원 간 환경 공유
03 자주 묻는 질문
FAQ멀티 컨테이너 (Docker Compose)란 무엇인가요?+
실제 앱은 컨테이너 하나로 끝나지 않습니다. 웹·API·데이터베이스를 각각 띄우고 네트워크로 잇고 볼륨을 붙이는 일을 `docker run` 여러 번으로 하면 재현이 어렵습니다. Compose 는 이 구성을 YAML 파일 하나에 선언해 두고 `docker compose up` 한 번으로 전체를 세우며, 서비스 이름이 곧 네트워크 상의 호스트 이름이 됩니다.
멀티 컨테이너 (Docker Compose)은(는) 어디에 사용하나요?+
로컬 개발 환경 재현, 통합 테스트 환경 구성, 여러 서비스의 의존 관계·기동 순서 정의, 팀원 간 환경 공유
멀티 컨테이너 (Docker Compose)를 쉽게 비유하면?+
여러 컨테이너의 구성을 YAML 한 장에 선언해 두고 한 번에 세웁니다. 서비스 이름이 그대로 네트워크 주소가 되고, depends_on 은 기동 순서만 정할 뿐 준비 완료를 보장하지 않습니다.
