Notice
Recent Posts
Recent Comments
Link
ยซ   2025/08   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

All that I've dreamed of

Django + debug_toolbar ์‚ฌ์šฉํ•˜๊ธฐ (+ Docker ํ™˜๊ฒฝ์— ์ถ”๊ฐ€) ๋ณธ๋ฌธ

ETC

Django + debug_toolbar ์‚ฌ์šฉํ•˜๊ธฐ (+ Docker ํ™˜๊ฒฝ์— ์ถ”๊ฐ€)

_๋ฒ ํ† ๋”” 2023. 4. 9. 13:21
๋ฐ˜์‘ํ˜•

๐ŸŽˆ Django + debug toolbar ์‚ฌ์šฉํ•˜๊ธฐ

๐ŸŽˆ Docker ํ™˜๊ฒฝ์—์„œ Django + debug toolbar ์‚ฌ์šฉํ•˜๊ธฐ

1. Django + debug toolbar ์‚ฌ์šฉํ•˜๊ธฐ

 

โœ”๏ธ์ฐธ๊ณ : https://django-debug-toolbar.readthedocs.io/en/latest/installation.html

 

poetry add django-debug-toolbar

๋˜๋Š”

pip install django-debug-toolbar

 

Installed-Apps ์—     "django.contrib.staticfiles" ์ด ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธ (๋””ํดํŠธ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ์Œ)

 

โœ๏ธ STATIC_URL = "static/" ์žˆ๋Š”์ง€ ํ™•์ธ

 

INSTALLED_APPS = [
    # ...
    "django.contrib.staticfiles",
    # ...
]

 

โœ๏ธ TEMPLATES ํ™•์ธ

 

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "APP_DIRS": True,
        # ...
    }
]

 

โœ๏ธ INSTALLED_APPS์— debug_toolbar ์ถ”๊ฐ€

 

INSTALLED_APPS = [
    # ...
    "debug_toolbar",
    # ...
]

 

โœ๏ธ ๋ฃจํŠธ์•ฑ  urls.py ์— ์•„๋ž˜ ์ฃผ์†Œ ์ถ”๊ฐ€ 

 

# config/urls.py

from django.urls import include, path

urlpatterns = [
    # ...
    path('__debug__/', include('debug_toolbar.urls')),
]

 

โœ๏ธ ๋ฏธ๋“ค์›จ์–ด ์ถ”๊ฐ€

 

MIDDLEWARE = [
    # ...
    "debug_toolbar.middleware.DebugToolbarMiddleware",
    # ...
]

 

 

โœ๏ธ INTERNAL_IPS ์ถ”๊ฐ€

 

INTERNAL_IPS = ['127.0.0.1']

 

์•„๋งˆ Docker ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ๋ฉด 127.0.0.1:8000 ์œผ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ Debug toolbar ๊ฐ€ ์ž˜ ๋ณด์ผ ๊ฑฐ์—์š”

 

But... 1๋ฒˆ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ธํŒ…์„ ํ•ด๋„ Docker ํ™˜๊ฒฝ์—์„œ๋Š” debug tool bar๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

 

๐Ÿ’ก ์™œ Docker  ํ™˜๊ฒฝ์—์„œ๋Š” debug tool bar ๊ฐ€ ๋ณด์ด์ง€ ์•Š์„๊นŒ์š”..?

 

โœ”๏ธ ์ฐธ๊ณ  Django Debug Toolbar not showing up when using Docker โ€” Django & Docker

https://ranjanmp.medium.com/django-debug-toolbar-not-showing-up-when-using-docker-django-docker-e79585813bc6

 

Django Debug Toolbar not showing up when using Dockerโ€Šโ€”โ€ŠDjango & Docker

The solution to why Django Debug Toolbar does not show up when using Docker.

ranjanmp.medium.com

 

- INTERNAL_IPS ๋Š”์š”...

 

Debug toolbar ๋Š” INTERNAL_IPS ๋ผ๋Š” ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Debug toolbar ๋Š” ์œ ์ €๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ IP ์ฃผ์†Œ๊ฐ€ INTERNAL_IPS ์— ๋“ฑ๋ก๋œ ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฑด ๋ณด์•ˆ์  ์ธก๋ฉด์—์„œ ๋‹ค๋ฅธ IP ์ฃผ์†Œ๊ฐ€ Debug toolbar ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ธ๋ฐ์š”.

๊ฐœ๋ฐœ์ž๋Š” INTERNAL_IPS ์— IP์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ Debug toolbar์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋กœ์ปฌ ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ INTERNAL_IPS ๋Š” ['127.0.0.1']๋กœ ์„ธํŒ…๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

- ๊ทธ๋ž˜์„œ ์™œ Dockerํ™˜๊ฒฝ์—์„œ๋Š” ์•ˆ ๋ณด์ด๋Š”๋ฐ์š”...

 

๊ฐ๊ฐ์˜ Docker ์ปจํ…Œ์ด๋„ˆ๋Š” Docker bridge network๋กœ๋ถ€ํ„ฐ IP ์ฃผ์†Œ๋ฅผ ํ• ๋‹น ๋ฐ›๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฉ€ํ‹ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ docker-compose๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋  ๋•Œ, docker-compose ๋‚ด์— ์žˆ๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ์œ„ํ•ด ๊ธฐ๋ณธ ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ์™€ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ '<ํด๋”์ด๋ฆ„>_default' ๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋˜๋Š”๋ฐ์š”, ๋งŒ์•ฝ ๋„คํŠธ์›Œํฌ ์ด๋ฆ„์ด docker-compose ํŒŒ์ผ์— ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด '<ํด๋”์ด๋ฆ„>'์€ docker-compose ํŒŒ์ผ ๋‚ด์˜ ํด๋”, ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ์˜ ์š”์ฒญ(request)๋Š” Docker bridge network ์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ†ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (docker-compose ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ..)

๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์‹œ์ž‘๋œ ์š”์ฒญ์€ ๋„คํŠธ์›Œํฌ์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฏ€๋กœ Django ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์š”์ฒญ๋ฐ›์€ IP ์ฃผ์†Œ๋ฅผ Docker ๋„คํŠธ์›Œํฌ์˜ ๊ฒŒ์ดํŠธ์›จ์ด IP ์ฃผ์†Œ๋กœ ์ธ์‹ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋กœ์ปฌ์—์„œ ๊ฐœ๋ฐœ์ค‘์ผ ๋•Œ INTERNAL_IPS๋ฅผ ["127.0.0.1"] ์ด๋ผ๊ณ  ์„ค์ •ํ•˜๋”๋ผ๋„ Debug toolbar๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. (๊ฒŒ์ดํŠธ์›จ์ด ์ฃผ์†Œ๋Š” 127.0.0.1์ด ์•„๋‹ˆ๋‹ˆ๊นŒ์š”...)

 

์ฆ‰, ๊ฒŒ์ดํŠธ์›จ์ด์˜ IP ์ฃผ์†Œ๋ฅผ INTERNAL_IPS์— ์ถ”๊ฐ€ํ•˜๋ฉด Debug toolbar ๋Š” ๋ณด์ด๊ฒŒ ๋ ๊ฑฐ์—์š”.

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ์‹์€ ์ถ”์ฒœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

์™œ๋ƒํ•˜๋ฉด ๊ฒŒ์ดํŠธ์›จ์ด IP ์ฃผ์†Œ๋Š” ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘์ง€๋˜๊ณ , ์‚ญ์ œ๋˜๊ณ , ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ๋ฐ”๋€” ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—์š”. 

 

2. Docker ํ™˜๊ฒฝ์—์„œ debug tool bar  ์‚ฌ์šฉํ•˜๊ธฐ

 

โœ”๏ธ Prerequisite

- Static, Template, Middleware, url.py ์˜ ์„ค์ •์€ 1๋ฒˆ๊ณผ ๊ฐ™์ด ๋งˆ์ณค๋‹ค๋Š” ์ „์ œ ํ•˜์— INTERNAL_IPS ๋งŒ ๋ณ€๊ฒฝํ•ด ๋ณผ๊ฒŒ์š”!

 

# settings.py

INTERNAL_IPS = ['127.0.0.1'] # ๊ธฐ์กด์˜ INTERNAL_IPS

if DEBUG:    
    import socket
    hostname, _, ips =socket.gethostbyname_ex(socket.gethostname())
    INTERNAL_IPS += [ip[:-1] + '1' for ip in ips]

 

hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())

=> ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์˜ IP ์ฃผ์†Œ๋ฅผ ips ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค

[ip[:-1] + '1' for ip in ips]

=> ํ˜ธ์ŠคํŠธ IP ์ฃผ์†Œ์˜ ๋งˆ์ง€๋ง‰ ํ•œ ์ž๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  1๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์˜ IP ์ฃผ์†Œ๊ฐ€ 172.17.0.3 ์ผ ๊ฒฝ์šฐ, Docker ๋„คํŠธ์›Œํฌ์˜ ๊ฒŒ์ดํŠธ์›จ์ด IP ์ฃผ์†Œ๋Š” ํ•ญ์ƒ 172.17.0.1์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

 

print(INTERNAL_IPS) ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ '127.0.0.1' ์— ๊ฒŒ์ดํŠธ์›จ์ด IP ์ฃผ์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ์ถœ๋ ฅ๋˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ ... 

 

 Debug toolbar ๊ฐ€ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹น ๐Ÿ‘๐Ÿ‘๐Ÿ‘

 

 

์ œ๊ฐ€ ํ•œ ๋ฐฉ์‹์œผ๋กœ๋„ ์ž˜ ์•ˆ ๋œ๋‹ค๋ฉด ์•„๋ž˜ ์ฐธ๊ณ  ๋งํฌ๋“ค๋„ ํ™•์ธํ•ด ๋ณด์„ธ์š”><

 

โœ”๏ธ ์ฐธ๊ณ  django_debug_toolbar and Docker

https://stackoverflow.com/questions/26898597/django-debug-toolbar-and-docker

โœ”๏ธ ์ฐธ๊ณ  Fix: Django Debug Toolbar not showing when using with Docker.

https://gist.github.com/douglasmiranda/9de51aaba14543851ca3

 

Comments