Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- auto-reload
- SCP294
- cs224w
- Graph Neural Network
- boj2352
- RGCN
- BigQuery
- Terraform
- the platform
- KG embedding
- cloudsql
- 로깅 서버
- npm7
- IaaC
- SCP 재단
- GNN
- DevOps
- ngrok
- ML/DL
- 영화 추천
- docker compose
- django
- Terragrunt
- 2352
- knowledge graph
- argocd
- 영화 리뷰
- auto reload
- GNNExplainer
- Heterogeneous Graphs
Archives
- Today
- Total
Itmom's blog
Django 개발 환경별 postgresql 연결 셋팅 본문
회사에서 개발 환경을 dev / staging / production / local로 분리하여 사용하고 있는데, CloudSql을 이용해 각 개발 환경별로 데이터베이스를 따로 띄워 셋팅하고자 하였다.
각 단계별로 수행한 일을 정리해보았다.
1. CloudSql 설정하기
- postgreSql 14버전을 GCP에 띄웠다.
- Authorized networks를 설정하였다.
onprem 환경에서만 접근할 수 있도록 CIDR range를 설정하였고, dev 환경에만 회사 ip address를 추가하여 접근할 수 있도록 셋팅하였다.
- User를 추가하였다. IAM을 이용해 셋팅할 수 있었지만, 우선 빠른 개발을 위해 custom user / password를 추가하였다.
2. 장고와 postgreSql 연동하기
settings.py
에 다음 코드를 추가하였다.
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": ENV("DATABASE_NAME"),
"USER": ENV("DATABASE_USER"),
"PASSWORD": ENV("DATABASE_PASSWORD"),
"HOST": ENV("DATABASE_HOST"),
"PORT": 5432,
}
}
Engine과 port는 고정해서 사용하기에 값을 고정해두었고, 다른 값들은 .env
파일에 값을 넣어두면, 해당 파일에서 값을 읽어와 사용하도록 설정하였다. 환경변수 설정값을 불러오는 부분은 다음과 같다.
import environ
ENV_VARIABLES_WITH_DEFAULT_VALUES = {"DEBUG": (bool, False)}
ENV = environ.Env(**ENV_VARIABLES_WITH_DEFAULT_VALUES)
ENV_DICT = {}
for key in ENV_VARIABLES_WITH_DEFAULT_VALUES:
ENV_DICT[key] = ENV(key)
globals().update(ENV_DICT)
DEBUG = ENV("DEBUG")
production / staging / dev 환경에서는 github action에서 docker image를 build할 때 .env
파일을 생성해 image안에 추가하는 방식을 이용하였다. 비밀번호과 같이 민감한 정보는 github secret안에 넣어 읽도록 하였다.
3. database migration script 돌리기
각 환경별로 database table을 초기화 해주기 위해 로컬에서 각 cloudSql 자원에 대해 python manage.py migrate
명령어를 수행해주었다.
잘 이루어졌다!
'Development > Backend' 카테고리의 다른 글
Linux File System과 Virtual File System (0) | 2022.02.26 |
---|---|
Docker compose 이용 시 Django auto reload (0) | 2022.02.26 |