티스토리 뷰

2. SQL

도커 MySQL 과 장고(파이토치 개발환경) 연동설정

패스트코드블로그 2021. 10. 1. 11:10

다음 설정은 MSA ( 스프링부트 + 넥스트 + 장고 + 도커(마리아디비)) 를 위한 설정이다.

마리아디비를 도커에서 두개 띄운다는 것이다.

이때 주의할 점은 마리아디비의 포트가 충돌을 일으키므로 3306과 3307 포트 두개를 설정한다.

3306은 디폴트포트이며 3307은 커스텀포트이다.

스프링부트와 넥스트 개발환경은 이미 개발이 완료되었다는 상황을 먼저 인식해야 다음 과정이 이해가 된다.

 

docker pull mariadb

 

docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mariadb mariadb

 

docker container ls -as

 

 

docker exec -it mariadb bash

mariadb -u root -p

show databases;

 

vi /etc/mysql/my.cnf 

 

아래 화면이 보이면 i 를 클릭하면 커서가 발생한다 (편집모드로 변경)

아래 화살표로 다운 시켜서 아래 표시된 위치까지 커서가 오게 한다.

 

 

 

 

 

위 구문을 카피 한 후 Cursor  라고 표시한 곳에 오른 클릭만 하면 아래와 같이 붙는다

esc  키를 누른 후 :wq!  (저장 후 빠져나오기) 를 타이핑한 후 엔터를 친다

다음은 장고에서 mariadb 에 접속하는 포트를 설정한다.(커스텀 포트 3307 등록할 경우이다)

 

 

만약 진행 중에 다음과 같은 에러가 발생하는 경우가 있다.

표시된 것 처럼 E 를 선택 후 vi /etc/mysql/my.cnf 부터 다시 하면 된다.

 

설정을 마친후에 도커를 껐다가 다시 켠다.

 

 

다음은 장고 설정이다.

CUDA프로그래밍에서 텐서플로파이토치를 한 프로젝트에서 다 사용 가능하도록 설정하려고 한다.

 

 

 

장고 터미널에서 콘다로 설치하는 과정에서 다음과 같은 에러가 발생했다. 

이유는 Local 설치이기 때문이다. 전역 아나콘다 프롬프트에서 설치한다.

 

 

 

 

기본 가상환경 base 를 사용하지 않고 새로 생성한다. (버전이슈가 자주 발생한다)

현재 기본으로 설치된 파이썬 버전은 아래와 같다.

그래서 3.8 버전으로 강제 설치한다.

conda create -n scalar python=3.8

 

참고로 기존에 가상환경이 많이 있다면 삭제하는 코드를 아래 첨부한다.

 

activate scalar # 콘다 프롬프트에서는 conda 명령어 생략가능하다.

 

[주의]  거의 대부분의 라이브러리는 requirements.txt 를 통해 설치가 가능하다.

그런데 2022년6월9일 현재 mysqlclient 와 파이토치 CUDA 11 버전은 설치시 에러가 발생했다.

그래서 이 두 라이브러리는 수동 설치를 하기로 했다.

 

Django와 mariaDB연동을 위해 mysqlclient 라이브러리를 설치한다.

 

 

홈피에 있는 방식으로 진행하면 에러가 발생한다.

홈피에 있는
conda install -c conda-forge mysqlclient
명령어는 다음과 같은 에러가 발생한다 (2022-06-09기준)
failed with initial frozen solve. Retrying with flexible solve
그래서 설치 가능한 다음 명령어로 실행한다.
pip install mysqlclient

다음과 같이 설치됐음을 확인한다.

 

 

다음은 파이토치 설치이다.

홈페이지에서 가져왔다.

conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge

나머지는 설치파일로 일괄 설치가 가능하다.

requirements.txt

aniso8601==8.0.0
beautifulsoup4
certifi==2020.6.20
chardet==3.0.4
click==7.1.2
Flask==1.1.2
Flask-RESTful==0.3.8
folium==0.12.1
googlemaps==4.4.5
html5lib
icecream==2.1.1
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.2
JPype1
jsonify==0.5
jupyter==1.0.0
konlpy==0.5.2
lxml
MarkupSafe==1.1.1
mccabe
mysql-connector
nltk
numpy
pandas
pandas-datareader==0.9.0
pep8==1.7.1
plotly==5.0.0
python-dateutil==2.8.1
pytz==2020.1
requests==2.24.0
seaborn
selenium==3.141.0
six==1.15.0
SQLAlchemy==1.3.20
tensorflow==2.6.0
tensorflow-gpu==2.6.0
tqdm
urllib3==1.25.10
Werkzeug==1.0.1
wincertstore==0.2
torch

pip install -r .\requirements.txt

 

파이참 인터프리터에서 설치가 된 것을 확인한다.

아래 표시된 3개 라이브러리가 중요하다.

텐서플로 GPU 와 파이토치 , 도커 (데이터베이스) 가 통합된 설정을 위해 이같은 복잡한 과정이 필요했다.

 

 

 

아나콘다 프롬프트에서 장고를 설치한다.

 

데이터베이스 접속 정보 설정

mariaDB가 정상적으로 설치 되었다면 settings파일에 DATABASES 변수를 다음과 같이 변경한다. (파이참)

 

admin/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # mysqlclient librarly 설치
        'NAME': 'scalardb',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3307'
    }
}

PORT 3307 은 도커 마리아디비에서 설정한 포트와 일치해야 한다.

일치하지 않으면 접속에러가 발생한다.

서버실행경로 체크를 위해 아래처럼 해두면 에러를 찾을 때 인식하기가 쉽다.

서버실행 전에 발생하는 에러인가, 이후 발생한 에러인가 판단하고자 한다.

수정 후 server 실행 시 (아래 코드를 터미널에서 실행한다)  올바른 접속이 이루어진 경우 오류메시지 없이 기동된다. 

 

python manage.py runserver

 

 

// 모델 생성하기

 

 

Docker Mariadb 와 PyCharm (유료버전 가능) 연동하기

 

 

 

 

현재 만들어진 테이블은 없다 (없어야 한다)

 

이로써 Pycharm 에서 Django Rest Framework + Docker Mairadb 개발 환경 구축이 완성된다.


출처: 도커에 마리아디비 설치 https://happygrammer.github.io/docker/mariadb/

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함