Docker 개발 환경
개발 환경을 위한 Docker 설정 가이드입니다.
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
개요
Foundation은 Docker를 통해 일관된 개발 환경을 제공합니다. 이 문서는 개발 환경 설정에 초점을 맞춥니다.
운영 환경 Docker
운영/배포 관련 Docker 설정은 인프라 운영 > Docker를 참조하세요.
개발 vs 운영
| 구분 | 개발 환경 | 운영 환경 |
|---|---|---|
| 목적 | 빠른 피드백, 디버깅 | 안정성, 성능 |
| 볼륨 | 소스 코드 마운트 | 이미지에 포함 |
| 로깅 | 상세 로그 | 최소 로그 |
| 설정 | 디버그 모드 | 프로덕션 모드 |
개발 환경 설정
소스 코드 마운트
# docker-compose.yml (개발용)
services:
app:
volumes:
# 소스 코드 실시간 반영
- ./web:/var/www/html
# 의존성은 별도 볼륨 (성능)
- app_vendor:/var/www/html/vendor
volumes:
app_vendor:
디버그 설정
services:
app:
environment:
- APP_DEBUG=true
- XDEBUG_MODE=debug
- XDEBUG_CONFIG=client_host=host.docker.internal
유용한 개발 명령어
컨테이너 접속
# 앱 컨테이너 셸 접속
make shell NAME=myproject
# 또는 직접
docker exec -it myproject-web bash
로그 확인
# 실시간 로그
make logs NAME=myproject
# 특정 서비스 로그
docker compose logs -f web
재시작
# 앱만 재시작 (빠름)
make restart NAME=myproject
# 전체 재시작
make down NAME=myproject && make up NAME=myproject
성능 최적화
볼륨 성능 (macOS)
macOS에서 Docker 볼륨 성능 개선:
volumes:
- ./web:/var/www/html:cached
# 또는
- ./web:/var/www/html:delegated
불필요한 파일 제외
# .dockerignore
node_modules
vendor
.git
*.log
일반적인 문제
권한 문제
# 컨테이너 내부 사용자 확인
docker exec myproject-web id
# 호스트와 동일한 UID 사용
# docker-compose.yml에서:
user: "${UID}:${GID}"
포트 충돌
# 사용 중인 포트 확인
lsof -i :8080
# 포트 변경 (.env)
APP_PORT=8081
캐시 문제
# 이미지 재빌드
docker compose build --no-cache
# 볼륨 초기화 (주의: 데이터 삭제)
docker compose down -v
IDE 연동
VS Code Remote Containers
// .devcontainer/devcontainer.json
{
"name": "Dev Container",
"dockerComposeFile": "../docker-compose.yml",
"service": "app",
"workspaceFolder": "/var/www/html"
}
PHPStorm Docker 연동
- Settings → PHP → CLI Interpreter → Docker 선택
- Docker Compose 서비스 지정
- Path mappings 설정
관련 문서
- Docker 운영 가이드 - 운영 환경 설정
- Makefile 명령어 - Docker 관련 명령어