Django + MySQL 구축

uxmin·2022년 12월 15일
0

Docker를 이용한 Django Project 생성 (with. MySQL)


  1. Docker 환경을 구축하기 위한 Root 폴더 생성
mkdir docker && cd docker

  1. Dockerfile 생성
FROM python:3.11
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

  1. requirements.txt 생성
Django>=3.0,<4.0
mysql

* 문서에는 Django에 대해서 버전 명시가 안되어 있었는데 버전 명시 안하면 error 발생한다. 이유는 아직 찾지 못할 무.

  1. docker-compose.yml 생성
version: '3'
services:
  db:
    image: mysql:8.0.31
    container_name: mysql
    ports:
      - 3306:3306
    env_file:
      - .env
    environment:
      TZ: Asia/Seoul
      
  web:
    image: django:4.0
    container_name: django
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db

  1. .env 생성
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=test
MYSQL_USER=uxmin
MYSQL_PASSWORD=uxmin

환경변수를 Compose 파일에 직접 삽입하거나 실행마다 쉘에 직접 변수로 선언하는 방법은 배포 및 유지에 비효율적이기 때문에 별도의 환경변수 파일을 구성하는 것이 효율적이다.
그래서 docker-compose.yml 파일이 위치한 동일 depth에서 .env 파일을 생성하여 환경변수 세팅을 해준다.

  1. Docker Compose 명령어로 Django Project 생성
docker compose run web django-admin.py startproject composeproject .
# 명령어로 생성된 Django Project 소유권 변경 (기본: root)
sudo chown -R $USER:$USER .

  1. Django Database 연결
# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'uxmin',
        'PASSWORD': 'uxmin',
        'HOST': 'db',
        'PORT': '3306'
    }
}

  1. Docker Compose 실행
docker compose up -d
# 실행 확인
docker compose ps
# NAME                COMMAND                  SERVICE             STATUS              PORTS
# django              "python manage.py ru…"   web                 running             0.0.0.0:8000->8000/tcp, :::8000->8000/tcp
# mysql               "docker-entrypoint.s…"   db                  running             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp



성공적으로 완료가 되었다면 여기를 눌러보세요



출처: Docker - Quickstart: Docker Compose and Django

profile
Back-end Developer

0개의 댓글