흔히 "도커 이미지를 말아서 어쩌구 저쩌구"라는 표현을 쓴다.
준비사항
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
를 생성하고 아래의 코드를 추가해준다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker!'
제대로 동작하는지 확인해보자.
$ python3 -m flask run
이제 http://localhost:5000
링크에 접속하면 'Hello, Docker!'가 출력되는 것을 확인할 수 있다.
애플리케이션이 제대로 동작하고 있다면, 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
이미지를 말아보자.
docker build --tag python-docker .
완료가 되었다면 docker 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
지금까지 도커 이미지를 마는 방법에 대해 알아보았고 다음 포스팅에서는 이미지를 컨테이너로 실행하는 방법에 대해 알아보자.
덕분에 꼼꼼히 잘 보면서 공부했습니다. 작은 오타가 두 개 있는데요
1) 파이썬 파일 안에 import 임포트가 빠졌습니다.
from flask import Flask
2) 도커 빌드 할 때 path패쓰가 필요합니다.
docker build --tag python-docker .
감사합니다.