DEPLOYMENT
00:00 경과
LABLAB-DOCKER-02-COMPOSE-MULTI입문
Docker Compose 멀티 서비스 구성
ELAPSED
00:00
PHASE
0 / 5
SLA
35분
📦 Docker← 목록
TRACK
DOCKER
SLA
35분
LEVEL
입문
PHASES
4단계
ENV
local
INCOMING TICKET
“팀장 Slack: "지금 팀원마다 Node.js 버전, PostgreSQL 버전이 달라서 works on my machine 버그가 계속 재현 안 되고 있어요. 오늘 중으로 로컬 개발 환경 Docker Compose로 통일해줄 수 있어요? 신입 온보딩 때마다 환경 세팅에 4시간씩 쓰고 있어서요."”
YOUR ROLE
주니어 인프라 엔지니어
안 하면 나중에
Docker Compose 없이 팀원 각자 다른 버전의 Node.js를 실행하면서 works on my machine 재현 불가 버그 반복 발생. 신입 온보딩 환경 세팅 평균 4시간 소요.
📋상황 브리핑
팀에서 반복되는 문제가 있습니다.
"내 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으로 서비스 시작 순서를 제어합니다
초기 상태: 빈 작업 디렉터리. docker-compose.yml과 nginx.conf를 직접 작성합니다. setup.sh는 실습 디렉터리 구조를 생성하지만 핵심 설정 파일은 학습자가 직접 작성해야 합니다.
확대⏱ 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/container-paradigm
• [이론] docker/dockerfile
ℹ️ 실습 환경
환경: local
필요 도구: docker, docker compose, curl
검증 스크립트:
/labs/lab-docker-02-compose-multi/scripts/verify.sh🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →>_ LAB WORKSPACE
NOTES