Part 8. Docker Compose란 무엇인가?
실제 프로젝트는 하나의 컨테이너만 사용하는 경우가 거의 없다. Laravel, PostgreSQL, Redis처럼 여러 컨테이너를 함께 실행해야 한다. 이번 글에서는 Docker Compose가 왜 필요한지, docker-compose.yml 파일은 무엇인지, services와 ports 개념은 무엇인지 알아본다.
Part 8. Docker Compose란 무엇인가?
1. 지금까지의 문제점
지금까지는 Docker 이미지를 만들고 컨테이너를 하나씩 실행했다.
docker run my-first-image
docker run my-second-image
하나의 컨테이너만 사용하는 경우에는 큰 문제가 없다.
하지만 실제 프로젝트는 대부분 여러 개의 컨테이너가 함께 동작한다.
2. 실제 프로젝트는 어떻게 구성될까?
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
예를 들어 Laravel 프로젝트를 생각해보자.
Laravel
↓
PHP
↓
Nginx
↓
PostgreSQL
↓
Redis
이 모든 것이 함께 동작해야 서비스가 정상적으로 실행된다.
즉 컨테이너도 여러 개 필요하다.
3. docker run만 사용하면?
각 컨테이너를 직접 실행해야 한다.
docker run ...
docker run ...
docker run ...
docker run ...
컨테이너가 많아질수록 관리가 어려워진다.
실행 순서도 신경 써야 한다.
4. Docker Compose란?
Docker Compose는 여러 개의 컨테이너를 하나의 설정 파일로 관리하는 도구다.
쉽게 말하면 Docker 프로젝트의 실행 설명서다.
docker-compose.yml
↓
컨테이너 설정 저장
↓
한 번에 실행
5. docker-compose.yml이란?
Docker Compose는 docker-compose.yml 파일을 읽는다.
이 파일 안에는 다음 정보가 들어간다.
사용할 이미지
컨테이너 이름
포트
볼륨
환경 변수
즉 프로젝트 전체 설정 파일이다.
6. 첫 번째 Compose 파일
services:
app:
image: ubuntu
의미는 다음과 같다.
app이라는 서비스 생성
↓
ubuntu 이미지 사용
7. services란?
services는 실행할 컨테이너 목록이다.
예를 들어
services:
app:
db:
redis:
라면
app 컨테이너
db 컨테이너
redis 컨테이너
를 의미한다.
8. 포트(Port)란?
포트는 프로그램의 출입구라고 생각하면 된다.
예를 들어 웹 서버는 보통 80 포트를 사용한다.
브라우저
↓
80 포트
↓
웹 서버
Docker에서는 컨테이너 포트를 외부로 연결해야 한다.
9. ports 설정
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
톨루나 팝업패널리워드 회원가입
ports:
- "8080:80"
의미는 다음과 같다.
내 PC 8080 포트
↓
컨테이너 80 포트
브라우저에서 접속하면 Docker 컨테이너로 연결된다.
10. docker compose up
docker compose up
Compose 파일에 정의된 모든 컨테이너를 실행한다.
예전처럼 docker run을 여러 번 입력할 필요가 없다.
11. docker compose down
docker compose down
Compose로 실행한 컨테이너를 모두 종료한다.
12. Docker Compose가 중요한 이유
실무에서는 거의 필수다.
Laravel 프로젝트도 보통 다음과 같이 구성한다.
services:
app
nginx
postgres
redis
한 번의 명령어로 전체 개발 환경을 실행할 수 있다.
13. Dockerfile과 Compose 차이
Dockerfile
↓
이미지 생성
반면
Docker Compose
↓
컨테이너 관리
역할이 다르다.
14. 지금까지 배운 흐름
Dockerfile 작성
↓
docker build
↓
Image 생성
↓
docker run
↓
Container 생성
↓
Docker Compose
↓
여러 컨테이너 관리
15. Part 8 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
Docker Compose = 여러 컨테이너 관리 도구
docker-compose.yml = 설정 파일
services = 컨테이너 목록
ports = 외부 연결 포트
docker compose up = 실행
docker compose down = 종료
다음 Part에서는 실제 docker-compose.yml 파일을 만들고 여러 컨테이너를 실행해본다.
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD









