Image_Us-환경 변수

codakcodak·2023년 2월 27일
0

ImageUs

목록 보기
3/17
post-thumbnail

문제상황

  • 개발 단계와 실제 배포 단계에서의 db환경을 분리해 놓지 않으면 추후 개발 단계에서의 잔여 데이터가 남거나 테스트 코드를 실행함에 있어서 클라우드 서버를 이용하는 경우 무리한 요청을 보낼 수 있음

해결방법

  • app생성시 인자를 설정함으로서 개발 단계별로 환경변수들을 분리

적용과정

  • config.py
db={
    "user":"codakcodak",
    "password":"test",
    "host":"localhost",
    "port":3306,
    "database":"imageus_back"
}

test_db={
    'user':'codakcodak_test',
    'password':'test',
    'host':'localhost',
    'port':3306,
    'database':'imageus_back_test'
}

JWT_SECRET_KEY="codakcodak"
DB_URL=f"mysql+mysqlconnector://{db['user']}:{db['password']}@{db['host']}:{db['port']}/{db['database']}?charset=utf8"

test_config={
    'DB_URL':f"mysql+mysqlconnector://{test_db['user']}:{test_db['password']}@{test_db['host']}:{test_db['port']}/{test_db['database']}?charset=utf8",
    'JWT_SECRET_KEY':"codakcodak"
}

*db,test_db로 크게 두 개로 환경변수를 나눔

  • app.py
def create_app(test_config=None):

    app=Flask(__name__)

    CORS(app)

	
    if test_config is None:
    	#따로 넣어준 환경변수가 없다면 기본환경변수 적용
        app.config.from_pyfile("config.py")
    else:
    	#인자에 명시한 환경변수로 적용
        app.config.update(test_config)

*테스트 환경이나 개발 환경에서 create_app에 test_config의 환경변수를 인자로 넣으면 넣어준 인자로 환경변수를 적용하여 app을 생성

  • test_view.py
def api():
    app=create_app(test_config=config.test_config)
    app.config['TEST']=True
    api=app.test_client()

    return api

*create_app생성시에 test_config라는 환경변수를 명시하여 적용

profile
숲을 보는 코더

0개의 댓글