본문 바로가기

강의/docker

Flask 어플리케이션을 docker로 실행

Docker image를 만들기 위해서는 Dockerfile이 필요합니다.

Dockerfile이란 docker image를 어떻게 생성할 것인지를 정의한 파일입니다.

 

flask 어플리케이션을 실행할 수 있는 dockerfile을 만들어보겠습니다.

FROM python:3.8

ADD requirements.txt .

RUN pip install -r requirements.txt

ADD templates templates

ADD app.py .

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

 

Flask를 실행하기 위해서는 python3.8 환경이 docker에도 setting이 되어있어야 합니다.

docker run -it python:3.8 커맨드를 실행하여 python 3.8 이미지를 다운로드 받습니다.

dockerfile에 적은 내용은 무엇을 의미하는 것일까?

FROM 이란 Docker image를 생성할 때 기본으로 사용할 base image를 적는 부분입니다.

  • python 3.8을 실행할 수있는 환경이 세팅 되어져 있는 이미지를 사용해서 docker 이미지를 만들겠다, 라는 의미입니다.

 

ADD 란 호스트 머신에 있는 파일이나 폴더를, dst라는 위치에 저장합니다.

  • requirements.txt 를 .이라는 위치에 저장

 

RUN 쉘에서 이 커맨드를 실행해서 환경을 만들겠다는 것입니다.

  • 이 커맨드를 이용하여 flask 환경을 구축
  • requirements.txt 파일이 없는 사람은 사용하지 않아도 되겠죠?

 

CMD 실행할 명령어를 적어줍니다.

  • 이미지를 커맨드 없이 실행하면 python app.py가 디폴트로 실행이 됩니다.

 

제 flask환경은 아래와 같습니다.

docker 이미지 생성

docker build .

가지고 있는 로컬 이미지 확인

docker images

  • 방금 우리가 만든 이미지의 Repository와 tag명이 None으로 나타나 있는 것을 확인할 수 있다.

repository와 tag를 주는 옵션

docker build -t docker-memo:version1 .

  • 기존에 None으로 표기되던 것들이 아래와 같이 변경되는 것을 확인할 수 있다.
  • repository: docker-memo
  • tag: version1

동일한 환경에서 동일한 커맨드로 빌드할 때 이전에 결과물이 있을 때, 이전 결과물을 사용하기 때문에 빌드 시간이 짧아진다.

아래 커맨드로 도커 이미지의 history를 확인할 수 있다.

docker history docker-memo:version1

도커 실행

docker run -d -p 5000:5000 docker-memo:version1

도커 상태 확인

docker ps

어플리케이션이 업데이트 되었을 경우

제 어플리케이션은 아래와 같은 화면을 나타내고 있습니다.

제목이 마음에 들지 않아 "나홀로 링크 메모장!"을 "모두의 링크 메모장" 이라고 변경하려고 합니다.

우선 index.html을 변경해야 겠네요

타이틀을 아래와 같이 변경합니다.

 

실행중인 프로세스를 확인합니다.

docker ps

실행중인 프로세스를 멈추고

docker stop 50a1e4b1077b

멈춘 프로세스를 종료합니다.

docker rm 50a1e4b1077b

새롭게 변경한 어플리케이션의 도커 컨테이너 이미지를 생성합니다.

docker build -t docker-memo:version2 .

이번에는 Index.html 만 변경되었기 때문에

ADD 커맨드에 index.html만 나타나는 것을 확인할 수 있습니다.

 

 

새로 만든 도커 이미지를 이용하여 도커를 실행합니다.

docker run -d -p 5000:5000 docker-memo:version2

 

짠!! 아래와 같이 변경된 결과가 나타나는 것을 확인할 수 있습니다.

 

'강의 > docker' 카테고리의 다른 글

Docker를 실행해보자  (0) 2022.05.01
Docker 사용  (0) 2022.05.01