Fast API 에서 .env 파일로 환경변수 관리하기 (python-dotenv)

2021. 10. 29. 17:45Dev

OS가 아닌 FastAPI 프로젝트 폴더단위로 환경변수를 관리하여, FastAPI 서버를 실행시켜 그 환경변수들만 로드하는 것에 대한 방법에 대해 설명한다. FastAPI에 대한 기초적인 지식은 있다고 가정하고 설명한다.

 

일단 간단한 프로젝트를 하나 만들어보자. 

test-fastapi /
 - main.py
 - .env

 

Code

 

0. 필요한 패키지를 설치해준다. 이 글에서 필요한 패키지는 python-dotenv 이다.

# 요놈들은 FastAPI 구동을 위한 기본 패키지이고,
pip install uvicorn
pip install fastapi

# 우리가 설치해야 할 애는 이놈이다.
pip install python-dotenv

 

1. main.py: 실제로 FastAPI를 동작시킬 코드이다. 최대한 간단하게 만들어보았다.

import uvicorn
import os
from fastapi import FastAPI
from dotenv import load_dotenv

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
load_dotenv(os.path.join(BASE_DIR, ".env"))


def create_app() -> FastAPI:
    app = FastAPI()
    return app


app = create_app()


@app.get("/")
def read_root():
    test_env = os.environ["TEST_ENV"]
    return {"result": test_env}


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0")

'/' 경로로 호출하면 TEST_ENV 라는 이름의 환경변수를 읽어서 출력해주는 간단한 API를 짜봤다.

 

 

 

2. .env: 환경변수를 적어줄 파일이다. (파일명 앞에 '.' 이 붙어있다는 것에 주의)

TEST_ENV=dogcat

 

 

Test

uvicorn 을 통해서 FastAPI 서버를 구동해보자. 각자 옵션주는 방법이 다를 수 있는데 나는 아래와 같이 줬다. 각자의 취향대로 FastAPI 서버를 띄워주면 된다.

uvicorn main:app --reload --host 0.0.0.0

 

실행결과 .env 파일에서 TEST_ENV에 담은 변수인  dogcat 이 잘 나오는 것을 확인할 수 있다.