리셋 되지 말자

[CSAPI] Django containerization 본문

프로젝트

[CSAPI] Django containerization

kyeongjun-dev 2021. 10. 4. 12:26

컨테이너화

이전 게시글에서 local 환경에서 venv를 이용해 원격 mariadb에 연결하는 것까지 성공했다. 이러한 django 서비스를 docker 컨테이너로 사용하기 위해 컨테이너화를 진행한다.

 

이슈

centos 위에서 mysqlclient 를 설치하여 진행했었는데, python:slim 이미지의 경우 apt 기반이다. 그래서 검증이 필요.

 

Django containerization 사전 테스트

python:3.7-slim 컨테이너로 접속

$ docker run -it -p 8000:8000 python:3.7-slim bash

 

패키지 업데이트

# apt update -y

 

mysql 접속에 필요한 패키지 설치

# apt-get install -y python3-dev default-libmysqlclient-dev build-essential

 

django, mysqlclient 설치

# pip install django mysqlclient

 

django 프로젝트 생성

# django-admin startproject config .

 

settings.py 수정

ALLOWED_HOSTS = ['*']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'csapi',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '192.168.252.101',
        'PORT': '3306'
    }
}

 

migrate 실행 전 database 서버 상태 - empty

MariaDB [(none)]> use csapi;
Database changed
MariaDB [csapi]> show tables;
Empty set (0.000 sec)

 

migrate 실행 후 상태

# python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying sessions.0001_initial... OK
  
  
MariaDB [csapi]> show tables;
+----------------------------+
| Tables_in_csapi            |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
10 rows in set (0.000 sec)

 

여기까지 mariadb 가 정상적으로 연동되는 것을 확인 완료

 

Django containerization 진행

디렉토리 확인

$ tree -aL 1
.
├── config
├── Dockerfile
├── .dockerignore
├── manage.py
└── venv

 

Dockerfile 작성

$ cat Dockerfile 
FROM python:3.7-slim

WORKDIR /csapi
ENV PYTHONUNBUFFERED 0

RUN apt update -y
RUN apt install -y python3-dev default-libmysqlclient-dev build-essential
RUN pip install django mysqlclient

COPY . .
RUN python manage.py makemigrations
RUN python manage.py migrate --run-syncdb

CMD python manage.py runserver 0.0.0.0:8000

 

.dockerignore 작성

$ cat .dockerignore 
venv

 

이미지 빌드 후, 컨테이너 실행

$ docker build -t csapi-django:test .
Sending build context to Docker daemon  20.99kB

$ docker run -d -p 8000:8000 --name django csapi-django:test
b7938ab40a65020913cddac3d0bdd48a59cff442020fdae5ac713b88b4c30eda
(venv) [vagrant@csapi django]$ docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS        PORTS                    NAMES
b7938ab40a65   csapi-django:test   "/bin/sh -c 'python …"   2 seconds ago   Up 1 second   0.0.0.0:8000->8000/tcp   django

 

브라우저 접속 테스트

 

 

'프로젝트' 카테고리의 다른 글

[CSAPI] Django login app 생성  (0) 2021.10.04
[CSAPI] Django csapi app 생성  (0) 2021.10.04
[CSAPI] Django 개발환경 셋팅  (0) 2021.10.03
[CSAPI] 구성 변경  (0) 2021.10.01
[CSAPI] nodejs, mongodb 컨테이너 추가  (0) 2021.09.22
Comments