일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 달리기
- 중식
- 한강
- Kubernetes
- 하체
- GitHub
- 소모임
- Python
- 정보처리기사
- Linux
- 유산소
- 뚝섬유원지
- Run The Bridge
- 대전
- 10km
- 자전거
- 건대입구역
- 맛집
- 힐링
- DSEC
- Podman
- 오답노트
- Grafana
- 성수대교
- 대구
- zabbix
- 러닝
- Shell
- 2021
- docker
Archives
- Today
- Total
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