[Docker] Django, MySQL 컨테이너 만들기

그냥·2022년 7월 21일
1

docker

목록 보기
6/6

Docker Compose

Django와 MySQL의 컨테이너를 서로 연결해서 사용할 것이기 때문에 Docker Compose를 사용해서 한 번에 설치하는 것이 효율적이다.

1) docker-compose.yaml

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"
  • context: docker build 명령을 실행할 디렉토리 경로
  • dockerfile: ‘개발용’ 도커 이미지를 빌드하는 데 사용할 Dockerfile을 지정
  • stdin_open: 기본 입력(stdin)을 연결하는 옵션이다. docker run 명령의 -i 옵션이다.
  • tty: pseudo tty(가짜 터미널)을 할당한다. docker run 명령의 -t 옵션이다.

    stdin_open과 tty를 true로 해야 컨테이너 안에서 터미널 실행이 가능하다.


2) docker compose

  • 설명: yaml 파일을 실행시켜 컨테이너를 생성한다.
  • 이동: docker-compose.yaml 파일이 있는 디렉토리로 이동
  • 명령어:
    docker compose up



MySQL 설정

1) mysql 컨테이너 접속 및 DB 생성

  • 컨테이너 접속

    docker exec -it for_mysql bash
  • 컨테이너 내 mysql에 접속

    mysql -u abc -p
    {비밀번호}
  • DB 생성

    create database {DB 이름}



Django 설정

1) 모듈 설치

  • 파이썬 설치

    apt update && apt install -y python
  • 가상환경 설치

    apt install -y python3-venv
  • vim 설치
    apt install -y vim

2) Django 디렉토리 생성 후 가상환경 활성화

  • 디렉토리 생성 및 이동

    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

3) Djagno 초기 세팅

  • 프로젝트 만들기

    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를 사용
  • settings.py 설정

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 = [
    
      ]

0개의 댓글