본문 바로가기

주저리 tmi

[Docker] Django + MySql Docker로 띄우기

 

 

Django 와 Mysql을 Docker로 띄우기 

 

docker-compose.yml파일 작성

version: "3.8"
services:
  app:
    build: .
    volumes:
      - .:/django
    ports:
      - 8000:8000
    image: app:django
    container_name: django_container
    command: python manage.py runserver 0.0.0.0:8000
    depends_on:
      db:
        condition: service_healthy
        restart: true

  db:
    container_name: mysql_db
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: 'django-app-db'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
    volumes:
      - ./data/mysql/db:/var/lib/mysql
      - ./mysql:/docker-entrypoint-initdb.d
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
    command:
    - --character-set-server=utf8mb4
    - --collation-server=utf8mb4_unicode_ci
    - --skip-character-set-client-handshake
    # - mysql -uroot --port 3306 < ./docker-entrypoint-initdb.d/initial_data.sql

 

Dockerfile작성

# Dockerfile

FROM python:3.9

ENV PYTHONUNBUFFERED 1 

RUN apt-get -y update 


RUN mkdir /django 
ADD . /django 

WORKDIR /django 

RUN pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

 

 

django> settings.py DB설정을 아래와 같이 변경

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django-app-db', #db명
        'USER': 'root', #db user 이름
        'PASSWORD': '', #db password
        'HOST': 'db', 
        'PORT': '3306',
    }
}

 

 

docker-compose build
docker-compose run --rm app django-admin startproject app .
docker-compose up
docker exec -it django_container /bin/bash


터미널에서 위 순서대로 커맨드 실행

 

참조 유튜브:

https://www.youtube.com/watch?v=q75wgk9jVjA

반응형