📌 🚀 [GitHub Actions CI - 3단계: 로컬 환경 자동화 검사 스크립트 만들기 & Docker와 DB 호스트 이슈 해결법]

2025. 6. 6. 18:23·프로젝트

📌 로컬 환경 자동화 검사 스크립트 만들기 & 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
'프로젝트' 카테고리의 다른 글
  • 📮2. 데이터베이스 스키마 설계
  • 📮 1. ERD(Entity Relationship Diagram) 작성하기
  • 🚀 [GitHub Actions CI - 2단계: 워크플로우 최종 완성 및 실전 팁]
  • 🚀 [GitHub Actions로 CI 구성하기 - 단계별 완벽 정리]
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787) N
      • Python (32)
      • 프로젝트 (110) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    homebartrend
    RM
    urbantrends
    btsdischarge
    bts
    hotcoffeecase
    titaniumcase
    livebroadcast
    youngprofessionals
    travel ban
    classaction
    basalcellcarcinoma
    gpterror
    btscomeback
    btsreunion
    americanlaw
    life reflection
    chinanightlife
    trumpmuskclash
    btsjungkook
    chatgpterror
    smartphonedurability
    global politics
    americaparty
    college reunions
    뷔
    remittance
    self-growth
    lawsuitculture
    newpoliticalparty
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 🚀 [GitHub Actions CI - 3단계: 로컬 환경 자동화 검사 스크립트 만들기 & Docker와 DB 호스트 이슈 해결법]
상단으로

티스토리툴바