나중에 텐서플로우 모델을 만들어서 모델을 배포하려고 하는데, 아주 편리한 방법 중에 하나가 Docker를 사용해서 배포하면 좋다고해서 도커의 이미지를 만드는 방법을 정리해본다.
(1) 도커파일 만들기
(2) 우분투 안에 필요한 라이브러리 설치할 수 있는 환경 만들기
(3) 판다스 설치하고 버전 확인하기(main.py)
(4) 간단판 파이썬 파일 카피하기
(1) ubuntu18:04라는 이미지에서부터 작업을 시작하고록 설정했다.
(2) Dockerfile 안에서 폴더를 생성했다. (RUN mkdir)
(3) 작업 경로를 지정했다. (WORKDIR)
(4) 라이브러리 깔려고 만든 Requirement.txt를 복사한다.(경로지정은 직전의 WORKDIR의 영향을 받는다.)
(5) 우분투를 업데이트 한다.
(6) 작업 환경 구축에 필요한 기본 라이브러리들을 다운로드한다.(git까지)
(7) Requirement.txt를 읽어서 추가 라이브러리를 설치한다.
(8) main.py라는 파이썬 파일을 카피한다.(main.py 안에는 pandas의 버전 확인 코드 한 줄이 들어있다.)
(9) 완료되면 "python3", "main.py"를 순차적으로 실행한다.
FROM ubuntu:18.04
RUN mkdir -p /home/volttron/Desktop/deployment
WORKDIR /home/volttron/Desktop/deployment
COPY ./Requirements.txt .
RUN apt-get update
RUN apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv
RUN apt-get install -y git
RUN python3.6 -m pip install pip --upgrade
RUN pip3 install -r ./Requirements.txt
COPY ./main.py .
CMD ["python3", "main.py"]
Requirements.txt 파일 안에 적힌 내용
도커 이미지 발행에 필요한 기본적인 파일들
cd Desktop/deployment
sudo docker build --tag deploy:v0.1 .
# 이미지 파일 확인
sudo docker images
# 불필요한 이미지 파일 삭제(이미지 발행하다 중단하면 잔여물이 남아 있어서 용량을 많이 차지함.)
sudo docker rmi [Image ID]
sudo docker run -it --rm deploy:v0.1
실행이 잘 되었는지 확인하기(판다스 버전 1.1.5가 확인되었다.)
지금은 --rm 옵션이 모두 실행되어서 컨테이너가 자동적으로 종료되어서 잔여물이 남지 않았지만, --rm 옵션을 끄면 컨테이너는 그대로 남아있다. 아래 명령어로 컨테이너 상황을 확인한다.
[-a] 옵션은 정지된 컨테이너도 모두 보기 위한 옵션이다.
sudo socker ps -a