백엔드 세팅하기

디기 디기 딥·2023년 1월 14일
0

백엔드는 django 프레임워크를 사용할 거다. 또, 개인적으로 종속성을 사람이 직접 다루는 pip를 별로 좋아하지 않는다. 그래서 poetry를 사용할 거다.

poetry & django 프로젝트 만들기

/blog-backend 폴더를 만든다. 여기다가 백엔드 자료는 모두 넣을 생각이다.

poetry init
poetry shell
poetry add django
mkdir blog-api
cd blog-api
django-admin startproject config .
python3 manage.py migrate

이러면 대충 세팅은 끝났다. 현재까지 folder structure는 아래와 같다.

.
├── blog-api
│   ├── config
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   ├── asgi.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── db.sqlite3
│   └── manage.py
├── poetry.lock
└── pyproject.toml

그 담엔 superuser 만들고 잘 실행되는지 확인하면 된다.

python3 manage.py createsuperuser # 세팅은 알아서
python3 manage.py runserver

localhost:8000/admin/ 에서 admin 페이지가 잘 표시되면 된 거다.

docker 설정

최상위 폴더(/blog-backend)에 아래 두 파일을 만든다.

Dockerfile

FROM python:3

ENV PYTHONUNBUFFERED 1

WORKDIR /backend

COPY poetry.lock pyproject.toml /backend/

RUN pip3 install poetry

RUN poetry config virtualenvs.create false

RUN poetry install --no-root

local에서 작업할 때는 poetry shell을 통해 가상환경을 쓰는 게 편한데 docker에서 돌릴 때는 굳이 가상환경 안 쓰는 게 편해서 virtualenvs.create false 옵션을 줬다. 이거 쓰기 싫으면 밑에 docker-compose.yml 에서 파이썬 실행할 때마다 poetry run 써야 되는데 저게 잘 안 될때가 있다. 그리고 컨테이너에 얘 하나 돌릴 건데 굳이 가상환경 만들 이유가 있나라는 생각도 든다.

docker-compose.yml

version: "3"

services:
  backend:
    command: "python3 blog-api/manage.py runserver 0:8000"
    build: .
    volumes:
      - .:/backend
    ports:
      - "8000:8000"
docker build -t blog-backend .
docker image ls # 이미지 잘 만들어졌는지 확인
docker-compose up

이러고서 admin 페이지 잘 들어가지면 성공이다.

git 설정

gitignore는 아래와 같이 만든다.
.gitignore

# Created by https://www.toptal.com/developers/gitignore/api/django
# Edit at https://www.toptal.com/developers/gitignore?templates=django

### Django ###
*.log
*.pot
*.pyc
__pycache__/
local_settings.py
db.sqlite3
db.sqlite3-journal
media

그 담에

git init
git add .
git commit -m "Initial commit"

이제 github에 레포지토리 만들고 연결한다.

git remote add origin <your repository's SSH>
git push --set-upstream origin master

이제 레포지토리 가보면 initial commit이 제대로 잘 들어간 걸 확인할 수 있다.

profile
Lead me to the land that you understand

0개의 댓글