Run The Bridge
dockerfile을 이용하여 DB와 python 연동하기 본문
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 # 쿼리 실행결과 출력
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