📌 로컬 환경 자동화 검사 스크립트 만들기 & Docker와 DB 호스트 이슈 해결법
1️⃣ 자동화 검사 스크립트란?
- 목적: 로컬에서 한 번에 코드 스타일 검사, 마이그레이션 체크, 테스트 실행까지 자동으로 처리해 실수를 줄이고 작업 효율을 높임
- 도구: isort, black으로 코드 포맷 검사, Django 관리 명령어로 마이그레이션과 테스트 진행
2️⃣ 간단한 자동화 스크립트 예시 (check.sh)
#!/bin/bash
echo "🚀 Code Quality and Test Automation Script Start 🚀"
echo "1️⃣ Check code format with isort"
isort . --check --diff
if [ $? -ne 0 ]; then
echo "❌ isort 검사 실패: import 정렬을 맞춰주세요."
exit 1
fi
echo "2️⃣ Check code format with black"
black . --check
if [ $? -ne 0 ]; then
echo "❌ black 검사 실패: 코드 스타일을 맞춰주세요."
exit 1
fi
echo "3️⃣ Apply migrations (check)"
python manage.py migrate --settings=config.settings.dev --check
if [ $? -ne 0 ]; then
echo "❌ 마이그레이션 필요 또는 실패. 'python manage.py migrate --settings=config.settings.dev'를 직접 실행하세요."
exit 1
fi
echo "4️⃣ Run Django tests"
python manage.py test --settings=config.settings.dev
if [ $? -ne 0 ]; then
echo "❌ 테스트 실패. 문제를 확인하세요."
exit 1
fi
echo "✅ 모든 검사 통과! 🎉"
- --settings=config.settings.dev 옵션으로 로컬 개발 환경 설정 명시적 사용
3️⃣ Docker 환경과 로컬 환경 DB 호스트 차이점 문제
- 에러 원인: my-db는 Docker 내 컨테이너 네트워크 이름.
로컬에서 직접 실행하면 my-db는 DNS 해석이 안되어 에러 발생 - 해결 방법
- 로컬(dev.py): DB 호스트를 localhost로 설정
- Docker(base.py, prod.py): DB 호스트를 my-db로 설정 유지
# dev.py (로컬용)
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "django-postgres",
"USER": "postgres",
"PASSWORD": "qwe123",
"HOST": "localhost", # 로컬에서 DB 연결 시 localhost 사용
"PORT": "5432",
}
}
# base.py, prod.py (Docker용)
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "django-postgres",
"USER": "postgres",
"PASSWORD": "qwe123",
"HOST": "my-db", # Docker 컨테이너 네트워크 내 DB 호스트명
"PORT": "5432",
}
}
4️⃣ 자동화 스크립트 실행 시 주의점
- 로컬에서 실행할 땐 반드시 dev.py 세팅 사용해야 함
- Docker나 CI(Github Actions) 환경에서는 기본 설정(prod 또는 base) 유지
- 명령어에 --settings=config.settings.dev 옵션 명시 권장
5️⃣ 요약 및 팁
- my-db는 Docker 내에서만 유효한 호스트명 → 로컬 개발 시 localhost 사용 필수
- 자동화 스크립트는 환경에 맞게 세팅 분기 처리 필요
- 로컬에서 자동화 검사 스크립트 작성 시, 실제 환경과 맞게 DB 연결 설정이 중요
- 필요시, Docker 환경용 검사 스크립트도 별도로 제작 가능
💡 TIP
환경별 설정을 정확히 구분하지 않으면 DB 연결 실패, 마이그레이션 실패 등 오류가 빈번하니 반드시 dev, prod 등 명확한 구분과 실행환경에 맞는 명령어 옵션 사용을 습관화하세요.
'프로젝트' 카테고리의 다른 글
📮2. 데이터베이스 스키마 설계 (1) | 2025.06.09 |
---|---|
📮 1. ERD(Entity Relationship Diagram) 작성하기 (0) | 2025.06.09 |
🚀 [GitHub Actions CI - 2단계: 워크플로우 최종 완성 및 실전 팁] (1) | 2025.06.06 |
🚀 [GitHub Actions로 CI 구성하기 - 단계별 완벽 정리] (0) | 2025.06.06 |
3️⃣ 슈퍼유저 생성 및 Django Admin 접속 (0) | 2025.06.06 |