Run The Bridge

dockerfile을 이용하여 DB와 python 연동하기 본문

Cloud/docker

dockerfile을 이용하여 DB와 python 연동하기

anfrhrl5555 2021. 7. 23. 13:31
728x90
반응형

1. python3 이미지를 사용한다.

- mysql 접속 주소는 mysql:3000와 같이 컨테이너 이름으로 접속

- mysql 연동을 위해서는 pymysql 모듈이 설치되어야 한다.

- app.py를 작성 mysql에 접속 및 sql결과를 가져오는 기능

 

2. app.py와 연동할 mysql 이미지 생성

 - mysql:5.7 이미지를 이용하여 서비스 포트를 기본 포트 3306번에서 3000번으로 변경

   mysql 환경설정 파일을 수정하여 근본적으로 포트를 변경

- mysql password는 이미지 실행 시점 말고 생성시점에 결정

- mysql에 입력한 데이터는 컨테이너를 재시작해도 지워지지 않아야 함(도커 볼륨 사용할 것)


Mysql

mysql 관련 설정
# docker images | grep mysql  # mysql image가 존재하는지 확인
# docker run -e MYSQL_ROOT_PASSWORD=password mysql:5.7  # TEST용
# docker exec - it [NAMES] bash  # mysql container로 접속
 → : /etc/mysql/mysql.conf.d/mysqld.cnf  # 파일 확인, 이 설정에 포트 3000을 하면된다.

Container안에서 수정해봤자, 재시작하면 내용이 지워진다. 그래서 host에서 처리해놔야 한다.

# mkdir mysql && cd mysql
# vi Dockerfile
아까 mysqld.cnf 파일 내용을 host로 가져와 'port = 3000'을 추가하면 된다.
FROM mysql:5.7
LABEL maintainer=test@test.co.kr"
LABEL version="1.0"
ENV MYSQL_ROOT_PASSWORD password
COPY mysqld.conf /etc/mysql/mysql.conf.d/
EXPOSE 3000
docker volume 사용하기
#docker volume ls  # volume 확인하기
# docker volume create mysql_vol  # 사용할 볼륨 생성
# docker build -t(tag) mysql:0.0 .  # 새로운 mysql image 생성
# docker run -d -v mysql_vol:/var/lib/mysql --network mybridge --name mysql mysql:0.0  # /var/lib/mysql으로 설정하면 내용을 보존할 수 있다, mybridge network는 만들어줘야 한다. create network [이름]
mysql Terminal로 접속
#docker exec -it [CONTAINER ID] bash
 : mysql -u root -p
 : db(developer), table(user), data(id, email, department)는 각자넣고 후 commit
설정 끝

Python

python 관련 설정
mkdir python && cd python
vi Dockerfile
vi app.py
vi requirements.txt
# vi Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install pymysql
COPY . .
CMD ["python", "./app.py"]
# vi app.py
import pymysql 

conn = pymysql.connect(host='localhost', user='root', password='password', db='developer', charset='utf8') 

cursor = conn.cursor() 

sql = "SELECT * FROM user where department = %s" 

cursor.execute(sql, ("AI")) 
res = cursor.fetchall() 

for data in res: 
        print(data) 

conn.commit() 
conn.close()
docker build -t myapp:0.0 .  # build하기
docker run --network mybridge myapp:0.0  # 쿼리 실행결과 출력

https://devpouch.tistory.com/96

 

[Python] 파이썬으로 mysql 데이터베이스 접근하기 (pymysql 사용법)

파이썬 스크립트를 통해 mysql 데이터베이스를 다뤄야 할때가 있습니다. 파이썬은 mysql과의 연동을 위해 pymysql이라는 모듈을 제공하는데요. 해당 모듈을 사용하면 파이썬을 사용하여 쉽게 mysql db

devpouch.tistory.com

728x90
반응형

'Cloud > docker' 카테고리의 다른 글

config을 사용해서 mysql port 변경하기  (0) 2021.07.26
docker 5일차  (0) 2021.07.23
docker 4일차  (0) 2021.07.22
docker 3일차  (0) 2021.07.21
docker 2일차  (0) 2021.07.18
Comments