๐งฉ 1. getenv๋ ๋ฌด์์ธ๊ฐ์?
from os import getenv
getenv()๋ ์ด์์ฒด์ ์ ํ๊ฒฝ ๋ณ์(environment variable) ๊ฐ์ ๊ฐ์ ธ์ค๋ ํจ์์
๋๋ค.
์ฆ, ์๋ฒ๋ ์ด์์ฒด์ ์ ์ ์ฅ๋ ์ค์ ๊ฐ์ Python ์ฝ๋์์ ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค.
์:
export DEBUG=True
from os import getenv
print(getenv("DEBUG")) # "True"
ํ๊ฒฝ ๋ณ์๋ .env ํ์ผ์ด๋ ํด๋ผ์ฐ๋ ์๋ฒ ์ค์ , CI/CD ํ์ดํ๋ผ์ธ ๋ฑ์์๋ ์ค์ ํ ์ ์์ด์!
๐ ๏ธ 2. ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์จ์ผ ํ ๊น์?
ํ๋์ฝ๋ฉ๋ ๋ฏผ๊ฐ ์ ๋ณด(์: SECRET_KEY, DB ๋น๋ฐ๋ฒํธ)๋ ๊นํ๋ธ์ ํธ์๋๋ฉด ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ๊ฒฝ ๋ณ์๋ ์ฝ๋์ ๋ถ๋ฆฌ๋ ์ธ๋ถ ์ค์ ์ด๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์์ต๋๋ค:
ํญ๋ชฉ ํ๋์ฝ๋ฉ ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ
| ํญ๋ชฉ | ํ๋์ฝ๋ฉ | ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ |
| ๋ณด์ | โ ํค ์ ์ถ ์ํ | โ ๋น๊ณต๊ฐ ์ ์ง |
| ์ ์ฐ์ฑ | โ ๊ฐ๋ฐ/๋ฐฐํฌ ๋ถ๋ฆฌ ์ด๋ ค์ | โ ํ๊ฒฝ์ ๋ฐ๋ผ ์๋ ์ค์ |
| ๊ด๋ฆฌ | โ ์๋ ์์ | โ ์ค์ ํ์ผ(.env)๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ |
๐ง๐ป 3. Django์์ getenv ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
โ ๊ธฐ๋ณธ ์ฌ์ฉ
from os import getenv
SECRET_KEY = getenv("DJANGO_SECRET_KEY", "default-dev-key")
DEBUG = getenv("DEBUG", "False") == "True"
ALLOWED_HOSTS = getenv("APP_HOSTS", "localhost").split(",")
- getenv("KEY", "๊ธฐ๋ณธ๊ฐ"): ํ๊ฒฝ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ฒด
- DEBUG๋ ๋ฌธ์์ด์ด๋ฏ๋ก, ๋ฐ๋์ "True" ๋ฌธ์์ด๊ณผ ๋น๊ตํด์ผ ํฉ๋๋ค.
- split(",")์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํธ์คํธ๋ฅผ ์ฝค๋ง๋ก ๊ตฌ๋ถํด ๋ฑ๋ก ๊ฐ๋ฅํด์.
๐๏ธ 4. .env ํ์ผ๊ณผ ํจ๊ป ์ฐ๊ธฐ (์ถ์ฒ ๋ฐฉ๋ฒ)
getenv()๋ ์ด์์ฒด์ ์์ ์ฝ์ง๋ง, .env ํ์ผ์ ์ฐ๋ฉด ๊ฐ๋ฐ/์ด์ ํ๊ฒฝ์ ์ฝ๊ฒ ์ค์ ํ ์ ์์ด์.
๐ง ์ค์น ๋ฐฉ๋ฒ (python-dotenv ์ฌ์ฉ)
pip install python-dotenv
๐ ์ค์ ์ฝ๋
from dotenv import load_dotenv
from os import getenv
import os
load_dotenv() # .env ํ์ผ์ ์๋์ผ๋ก ์ฝ์
SECRET_KEY = getenv("DJANGO_SECRET_KEY")
DEBUG = getenv("DEBUG", "False") == "True"
๐ .env ์์
DJANGO_SECRET_KEY=your-secret-key
DEBUG=True
APP_HOSTS=127.0.0.1,localhost
๐ฆ 5. ์ค์ settings.py ์ ์ฉ ์์
from pathlib import Path
from dotenv import load_dotenv
from os import getenv
import os
load_dotenv()
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = getenv("DJANGO_SECRET_KEY", "fallback-secret")
DEBUG = getenv("DEBUG", "False") == "True"
ALLOWED_HOSTS = getenv("APP_HOSTS", "127.0.0.1").split(",")
์ด๋ ๊ฒ ์ค์ ํ๋ฉด settings.py๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ํ๊ฒฝ๋ง๋ค ์ค์ ์ ๋ค๋ฅด๊ฒ ์ ์ฉํ ์ ์์ด์!
๐ ๋ง๋ฌด๋ฆฌ ์์ฝ
| getenv() | ํ๊ฒฝ๋ณ์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ํจ์ |
| ์ฅ์ | ๋ณด์, ์ ์ฐ์ฑ, ์ ์ง๋ณด์ ํธ๋ฆฌ |
| ์ถ์ฒ ์ฌ์ฉ๋ฒ | python-dotenv + .env ํ์ผ |
| Django ์ ์ฉ | settings.py์์ ์ค์ ๊ฐ ์ฝ๊ธฐ |
๐ผ๏ธ ์ฐธ๊ณ ๋ค์ด์ด๊ทธ๋จ: Django ์ค์ ๊ณผ ํ๊ฒฝ ๋ณ์ ํ๋ฆ
