Eyeeshot BloG

Python Docker Image Create 본문

Tech

Python Docker Image Create

eyeeshot 2021. 1. 29. 11:54

새로운 python 어플리케이션을 구동하기 위해서 항상 관련 라이브어리를 설치하고 설정하고 하는것은 비효율적이다.

Docker는 어플리케이션을 신속하게 구축, 테스트 및 배포할수 있는 소프트웨어 플랫폼이다.

 

python 을 테스트 및 개발하기위해 docker를 활용하여 생성해 보겠다.

 

우선 docker를 사용하기 위해서는 Docker를 설치 해야한다.

환경별로 docker 설치방법은 링크 에서 확인하고 설치하면 된다.

 

docker가 설치 되어있으면 아래 명령어를 실행시키면 docker image를 docker hub에서 받아서 실행시킨다.

$ docker run -it python:3

명령어를 실행하면 local에 image가 없기때문에 hub에서 다운받게 된다. 버전을 따로 기입안했기때문에 lastest로 받게됩니다.

 

이미지가 이미 있을경우는 위 그림처럼 바로 실행이 된다.

$ docker run -it python:3 bash

#결과

root@c0f596673d25:/#

위명령어를 치면 python 이미지의 터널링으로 접속할수 있다.

 

환경변수를 넣는 방법이다.

$ docker run -it --env CONF_PATH=eyeeshot python:3 bash

#bash 후 확인.
root@c0f596673d25:/# echo $CONF_PATH
eyeeshot
root@c0f596673d25:/#

 

 

디렉터리 연결 방법

$ ls ./sample
requirements.txt  test.py

#결과
$ docker run -it --volume `pwd`/sample:/sample python:3 bash
root@ee20e3d16632:/# ls /sample
requirements.txt  test.py
root@ee20e3d16632:/#

docker 실행 하는 위치에서 sample 폴더를 만든후 그안에 requirements.txt 와 test.py 생성한후 연결해보면 이미지 안에도 같은 파일이 확인되는것을 볼수 있다.

 

위와같이 python 어플리케이션 실행시 필요한 의존 패키지와 파일들을 연결하여 docker image로 테스트 해볼수 있다.

 

하지만 항상 저렇게 명령어를 다 붙여서 하는것 비효율 적이다. 따라서 Dockerfile을 작성하여 만들면 편하게 사용할수 있다.

 

Dockerfile

FROM python:3.8-alpine
LABEL maintainer="eyeeshot@gmail.com"

WORKDIR /app

ADD ./sample /app/
RUN pip install -r requirements.txt

CMD ["python","app.py"]

 

위 도커 파일을 만든후 아래 명령어를 실행하면 이미지가 생성된다.

$ docker build -t my-python .
$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
my-python                     latest              e1adc20df7cb        5 seconds ago       903MB

위와 같이하면 images가 생성된것을 볼수 있을것이다.

 

$ docker run -d -p 8000:5000 my-python

위 명령어를치면 docker가 정상적으로 뜬것을 확인할수 있다.

#
$ curl localhost:8000
Hello, world! $

curl 로 정상적으로 flask가 동작하는것을 확인할수 있다.

 

해당소스는 아래 git에서 받을수 있습니다.

github.com/eyeeshot/flask-docker

'Tech' 카테고리의 다른 글

심볼릭 링크  (0) 2021.01.29
AWS IoT Core Job  (0) 2021.01.27
Python Docker 이미지 생성 주의점!  (0) 2021.01.26
Docker 환경변수 설정  (0) 2021.01.18
ssh 파일전송 scp  (0) 2021.01.18