Docker -Python ODBC 구성

2022. 3. 24. 10:37Docker

우선 무엇을 위해서 파이썬 컨테이너에 ODBC를 구성하게 되었는가

1. 센서 데이터를 받아오는 특정 MQ에서 지속적으로 메세지를 받는다.

2. 받아진 메세지를 뜯어서 내가 원하는 형태로 가공하고 

3. 이를 DB에 적재하기 위함

 

이것을 위해서 해당 Python .py코드를 작성하고 Docker Container를 생성하여 Kubernetes에 배포하는 과정중 

Docker Image - Python3.8-slim-buster를 이용하여 배포를 해본결과 

 

((odbc driver 17 for sql server)) 관련 에러가 발생 했다. 드라이버가 없어서 데이터를 DB로 전송할 때 필요한 

Connection을 잡지 못한다는 것

 

--해결 방법--

 

1. Shell Script 작성 

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list

apt-get update
ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
apt-get install -y libgssapi-krb5-2

MS Docs에서 제공하는 ODBC 설치 과정을 Shell Script로 작성

 

2. Dockerfile이 이미지를 생성할때 CMD 명령어를 이용해서 실행 시켜준다. 

FROM FROM python:3.8-slim-buster
# Docker 이미지 내부에서 RUN, CMD, ENTRYPOINT의 명령이 실행될 디렉토리를 설정 (작업 폴더 설정)
WORKDIR /app
# 현재 디렉터리에 있는 파일들을 이미지 내부 /app 디렉터리에 복사함
COPY . /app
# Shell Script를 실행
CMD ["/bin/bash", "/app/odbc_install.sh"]

3. kubernetes 재 배포

 

오류가 말끔하게 해결되었다.