Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 1697
- InfluxDB
- snmp test
- g++ 업데이트
- semanage
- snmp
- regex_search
- selinux port 등록
- python popen
- gcc regex
- telegraf
- grafana dashboard
- python subprocess
- c3 second
- c++ 정규식
- python os
- influxdb 설치
- linux시간으로 변경
- subporcess path
- 백준
- gcc 업데이트
- c3 축 없애기
- 정규식 문자열 출력
- c3 초
- 정규식 활용
- c3 축 가리기
- CentOS7
- c3 step graph
- centos pyhon 설치
- 정규식 컴파일
Archives
- Today
- Total
리셋 되지 말자
[CSAPI] Django containerization 본문
컨테이너화
이전 게시글에서 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