빠른 임시 해결: --insecure 플래그
가장 손쉽게 확인해 보고 싶다면, docker-compose.yml 의 커맨드를 이렇게 바꿔 보세요:
services:
my-django:
# ...
command: >
sh -c "python manage.py migrate \
&& python manage.py runserver --insecure 0.0.0.0:8000"
- --insecure 옵션을 주면 DEBUG=False 상황에서도 runserver가 /static/ URL을 임시로 띄워 줍니다.
- 재시작 후 localhost:8000/admin/ 에서 CSS가 정상 로드되는지 확인하세요.
근본 해결: WhiteNoise + collectstatic
실서비스에서도 쓰려면 정적파일을 모아서 서빙해 줄 서버(또는 미들웨어)가 필요합니다. Django 진영에선 WhiteNoise 를 많이 씁니다.
- 의존성 추가
pip install whitenoise
- config/settings/prod.py 에 설정 추가
from .base import *
DEBUG = False
ALLOWED_HOSTS = ["*"] # 또는 실제 도메인
# 1) runserver_nostatic → runserver에서도 WhiteNoise가 static을 처리하게 함
INSTALLED_APPS.insert(0, "whitenoise.runserver_nostatic")
# 2) WhiteNoise 미들웨어를 제일 위에
MIDDLEWARE.insert(0, "whitenoise.middleware.WhiteNoiseMiddleware")
# 3) collectstatic 후 WhiteNoise가 압축 파일도 제공하도록
STATIC_ROOT = BASE_DIR / "staticfiles"
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
- Docker Compose 커맨드 갱신
services:
my-django:
# ...
command: >
sh -c "python manage.py collectstatic --noinput \
&& python manage.py migrate \
&& python manage.py runserver 0.0.0.0:8000"
- 재빌드 & 재실행
docker compose down
docker compose up -d --build
- 검증
- docker compose logs -f my-django 에서 collectstatic 로그가 보이고
- http://localhost:8000/admin/ 에 들어가면 CSS/JS가 정상 로드됩니다.
요약
- 임시 확인: runserver --insecure
- 권장: WhiteNoise 설치 → collectstatic → 미들웨어 설정
이 중 하나를 적용하시면, Docker 환경에서도 Admin 페이지가 깨지지 않고 정상적으로 스타일이 입혀질 거예요.
'프로젝트' 카테고리의 다른 글
AWS EC2 인스턴스접속 (0) | 2025.06.14 |
---|---|
AWS ec2 생성시 my-key 페어 삭제방법 (0) | 2025.06.14 |
📌 3. Django 백엔드 카카오 OAuth 최종코드 (0) | 2025.06.13 |
📌 3. Django 백엔드에 카카오 콜백 구현 (0) | 2025.06.13 |
📌 2. Django 백엔드에 카카오 OAuth 연동 시작 (0) | 2025.06.13 |