Django와 MySQL의 컨테이너를 서로 연결해서 사용할 것이기 때문에 Docker Compose를 사용해서 한 번에 설치하는 것이 효율적이다.
version: "3"
services:
mysql:
image: mysql:5.7
container_name: for_mysql
volumes: ./docker/data:/var/lib/mysql/data
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_DATABASE: abc
MYSQL_USER: user1
MYSQL_PASSWORD: 1234
ports:
- "3300:3306"
django:
image: ubuntu:latest
container_name: for_django
volumes: ./:/app/
command: bash
#build:
# context: .
# dockerfile: ./compose/django/Dockerfile-dev
depends_on:
- mysql
stdin_open: true
tty: true
ports:
- "8080:80"
stdin_open과 tty를 true로 해야 컨테이너 안에서 터미널 실행이 가능하다.
docker compose up
컨테이너 접속
docker exec -it for_mysql bash
컨테이너 내 mysql에 접속
mysql -u abc -p
{비밀번호}
DB 생성
create database {DB 이름}
파이썬 설치
apt update && apt install -y python
가상환경 설치
apt install -y python3-venv
apt install -y vim
디렉토리 생성 및 이동
mkdir my_django_app
cd my_django_app
가상환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate
가상환경 내에서 모듈 설치
pip install django
apt-get install libmysqlclient-dev -y
apt-get install mysql-client-core-5.6
apt-get install python3.10-dev -y
apt-get install gcc -y
pip install mysqlclient
프로젝트 만들기
django-admin startproject {프로젝트 명} {프로젝트가 만들어질 위치}
cd {프로젝트 명}
my_settings.py 생성:
프로젝트 최상위 폴더에 my_settings.py 생성
touch my_settings.py
파일에 쓰여지는 내용
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': 'MySQL 컨테이너 이름',
'PORT': 'MySQL 컨테이너 내부 포트번호',
}
}
SECRET_KEY = '시크릿키'
#settings.py에 있는 secret_key를 사용
my_settings.py에서 DATABASES, SECRET_KEY를 불러온다.
from my_settings.py import DATABASES, SECRET_KEY
불러온 settings.py 내의 DATABASES, SECRET_KEY를 불러온 DATABASES, SECRET_KEY로 바꿔준다.
SECRET_KEY = SECRET_KEY
DATABASES = DATABASES
모든 IP의 접속을 허용할 수 있도록 아래와 같이 바꿔 준다.
ALLOWED_HOSTS = ['*']
urls.py 설정:
{프로젝트 명}/urls.py 내에 있는 것을 모두 지우고 아래와 같이 수정
from django.urls import path
urlpatterns = [
]