Tech & TIL

Docker 튜토리얼 [파이썬] - 1 본문

MLOps

Docker 튜토리얼 [파이썬] - 1

Jadon Yang 2022. 5. 9. 16:29

Build you Python image

흔히 "도커 이미지를 말아서 어쩌구 저쩌구"라는 표현을 쓴다.

Overview

준비사항

  • Python 3.8 이상
  • Docker running locally. installation
  • Visual Studio Code

Sample application

Flask framework를 사용하는 간단한 파이썬 애플리케이션을 만들어보자.
먼저 로컬에 python-docker 라는 이름의 폴더를 만들고 간단한 웹서버를 만들기 위해 아래 스텝을 따라해보자.

$ cd /path/to/python-docker
$ pip3 install Flask
$ pip3 freeze | grep Flask >> requirements.txt
$ touch app.py

VS Code를 열어서 python-docker 디렉토리에 app.py를 생성하고 아래의 코드를 추가해준다.

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, Docker!'

Test the application

제대로 동작하는지 확인해보자.

$ python3 -m flask run

이제 http://localhost:5000 링크에 접속하면 'Hello, Docker!'가 출력되는 것을 확인할 수 있다.

Create a Dockerfile for Python

애플리케이션이 제대로 동작하고 있다면, Dockerfile을 만들어보자. 파일명은 반드시 Dockerfile로 해야하는 것은 아니지만 Official Docs에서 Dockerfile로 만드는 것을 권장하고 있다. 도커 파일 내부의 코드는 여기에서 확인해보자.

# syntax=docker/dockerfile:1

FROM python:3.8-slim-buster

WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY . .

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

여기까지 완료했다면 directory structure는 아래와 같다.

python-docker
|____ app.py
|____ requirements.txt
|____ Dockerfile

Build an image

이미지를 말아보자.

docker build --tag python-docker

완료가 되었다면 docker images 명령어로 제대로 생성되었는지 확인해보자.

Tag Images

이미지 태그를 바꿔보자.
현재 python-docker의 태그가 latest로 되어있을텐데 이것을 v1.0.0으로 변경해보자.

docker tag python-docker:latest python-docker:v1.0.0

결과를 보면 아래와 같은데, TAG은 다르지만 Image ID는 같다.

이미지를 지우고 싶다면

docker rmi python-docker:v1.0.0

지금까지 도커 이미지를 마는 방법에 대해 알아보았고 다음 포스팅에서는 이미지를 컨테이너로 실행하는 방법에 대해 알아보자.

Reference

Docker Official Document

'MLOps' 카테고리의 다른 글

Docker 문법 정리  (0) 2022.05.09
Docker 튜토리얼 [파이썬] - 2  (0) 2022.05.09
Comments