ACTIVE INCIDENT
00:00 elapsed
LABLAB-DOCKER-02-COMPOSE-MULTISEV-3
Docker Compose 멀티 서비스 구성
ELAPSED
00:00
PHASE
0 / 5
SLA
35분
📦 Docker
← 목록
INCIDENT RESPONSE
0 / 6 단계 완료
📚 PREREQUISITES
Theorydocker/containers-basic
Theorydocker/dockerfile
TRACK
DOCKER
SLA
35분
SEV
SEV-3
PHASES
4단계
ENV
local
INCOMING TICKET
팀장 Slack: "지금 팀원마다 Node.js 버전, PostgreSQL 버전이 달라서 works on my machine 버그가 계속 재현 안 되고 있어요. 오늘 중으로 로컬 개발 환경 Docker Compose로 통일해줄 수 있어요? 신입 온보딩 때마다 환경 세팅에 4시간씩 쓰고 있어서요."
YOUR ROLE
주니어 인프라 엔지니어
IMPACT IF UNRESOLVED
Docker Compose 없이 팀원 각자 다른 버전의 Node.js를 실행하면서 works on my machine 재현 불가 버그 반복 발생. 신입 온보딩 환경 세팅 평균 4시간 소요.
🚨INCIDENT BRIEF
팀에서 반복되는 문제가 있습니다.
"내 PC에서는 되는데 다른 팀원 PC에서는 안 돼요."
팀원마다 Node.js 16, 18, 20을 각자 설치해서 쓰고 있습니다. PostgreSQL 버전도 제각각입니다. 버그를 재현하려면 버전을 맞추는 것부터 시작해야 하고, 신입이 들어올 때마다 환경 세팅에 4시간 이상 걸립니다.
`docker-compose.yml` 파일 하나로 이 문제를 해결합니다. nginx와 앱 서버를 함께 띄우고, nginx가 앱으로 요청을 프록시하도록 설정하면 — 어떤 PC에서든 `docker compose up -d` 한 줄로 동일한 환경이 올라옵니다.
이 Lab을 끝내면:
- Docker Compose 서비스 간 DNS 통신 원리를 이해합니다
- 볼륨 마운트로 코드 변경이 즉시 반영되는 개발 환경을 구성합니다
- depends_on으로 서비스 시작 순서를 제어합니다
⏱ 35분📊 입문🔧 4단계#docker#docker-compose#nginx#multi-service
MISSION
1
docker-compose.yml 기본 구조 작성
두 서비스(nginx, app)를 정의한 docker-compose.yml을 작성하고, docker compose up -d로 두 컨테이너를 동시에 기동한다
2
nginx → app 리버스 프록시 설정
nginx.conf에 proxy_pass를 작성하고 볼륨으로 마운트해, curl localhost가 nginx를 통해 app 서비스까지 연결되는 것을 확인한다
3
볼륨으로 정적 파일 마운트
html/ 디렉터리를 app 컨테이너에 볼륨 마운트해 컨테이너 재빌드 없이 로컬 파일 변경이 즉시 반영되는 것을 확인한다
4
depends_on과 서비스 종료
depends_on으로 app 컨테이너가 먼저 뜬 후 nginx가 시작되도록 순서를 보장하고, docker compose down으로 전체 스택을 깔끔하게 정리한다
📌 선수 지식
• [이론] docker/containers-basic
• [이론] docker/dockerfile
ℹ️ 실습 환경
환경: local
필요 도구: docker, docker-compose, curl
검증 스크립트: /labs/lab-docker-02-compose-multi/scripts/verify.sh
🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →
>_ LAB TERMINAL↔ 너비 조절
NOTES