본문 바로가기

카테고리 없음

Flask API를 Dockerize하는 방법

반응형

Flask API를 Dockerize하는 방법

 

 

매우 간단한 몇 단계로 Flask 애플리케이션을 도킹하는 방법 탐색

 

도커 + 플라스크(파이썬)

Flask는 빠르고 쉬운 방법으로 경량 웹 애플리케이션 및 API를 개발하는 데 도움이 되는 Python 마이크로 웹 프레임워크입니다.

Werkzeg WSGI 툴킷과 Jinja 2 템플릿 엔진을 기반으로 합니다.

Docker는 컨테이너를 사용하여 애플리케이션을 보다 쉽게 ​​생성, 배포 및 실행할 수 있는 도구입니다. 시간이 걸리므로 이 기사에서 컨테이너의 이점에 대해서는 다루지 않을 것이므로 완료하는 데만 집중할 것입니다. 도커에 대한 자세한 내용은 여기로 이동하십시오.

기본 작동하는 Flask 앱이 있다고 가정합니다.

앱 구조가 무엇이든 이를 고정화하려면 프로젝트에 Dockerfile이 필요합니다. 일반적으로 루트 디렉토리에 보관하지만 설정 방법에 따라 다릅니다.

이 기사를 위해 다음과 같은 간단한 설정을 가정해 보겠습니다.

flaskapp
|---app.py
|---Dockerfile
|---requirements.txt

먼저 간단한 Flask 앱을 ​​살펴보겠습니다. app.py 파일:

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():
return 'Hello, we have Flask in a Docker container'if __name__ == "__main__":
app.run(debug=True)

이제 우리의 requirements.txt 파일:

Flask==2.1.2

OK… 이제 가장 중요한 것은 Dockerfile입니다.

여기에는 이미지를 만드는 데 필요한 모든 정보가 포함됩니다. 살펴보겠습니다.

FROM python:3.8-slim-busterWORKDIR /app# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /app/requirements.txtRUN pip install -r requirements.txtCOPY . /appENTRYPOINT [ "python" ]CMD [ "app.py" ]

다음 Docker 지침 중 일부를 살펴보겠습니다.

  1. Dockerfile의 첫 번째 줄은 Docker에게 새 이미지의 기반이 될 이미지를 알려줍니다. 우리는 선택했다 python:3.8-slim-buster 단순함을 위해 그러나 Ubuntu와 같은 다른 것을 기반으로 할 수 있습니다.
  2. WORKDIR 도커 이미지 내부에 작업 디렉토리를 설정합니다. 다음 모든 지침은 이 디렉토리 내에서 작동합니다.
  3. RUN 명령을 실행합니다. 이 경우, pip install 우리의 요구 사항.
  4. COPY 첫 번째 매개변수에서 두 번째 매개변수로 파일을 복사합니다.
  5. ENTRYPOINT 실행 파일로 실행되도록 컨테이너를 구성합니다. ENTRYPOINT 명령이 실행됩니다.

남은 것은 다음을 사용하여 이미지를 구축하는 것입니다. docker build . 우리는 또한 사용할 것입니다 — tag 플래그를 사용하여 이미지의 이름을 지정합니다.

Dockerfile이 있는 디렉터리에서 다음 명령을 실행합니다.

docker build --tag my-app .

이 명령은 프로젝트의 크기와 요구 사항에 따라 시간이 걸릴 수 있습니다.

빌드가 완료되면 다음 명령을 사용하여 이미지가 생성되었는지 확인할 수 있습니다.

docker image lsREPOSITORY      TAG       IMAGE ID       CREATED             SIZE
my-app          latest    ef514c013f1a   About an hour ago   812MB...

우리의 이미지는 우리가 설정한 태그와 함께 여기에 나타나야 합니다.

이제 이미지를 컨테이너로 실행할 수 있습니다. docker run 명령을 실행하고 이미지의 이름을 지정합니다.

우리는 또한 두 개의 플래그를 전달할 것입니다:

  1. -d 도커가 분리 모드에서 실행되기를 원한다는 것을 나타내는 분리 플래그입니다.
  2. -p 5000:5000 도커에게 포트를 노출하고 매핑하기를 원한다고 알려주는 포트 플래그 5000 따라서 컨테이너 외부에서 앱에 액세스할 수 있습니다.

명령은 다음과 같아야 합니다.

docker run -d -p 5000:5000 my-app

그게 다야! 해 보자.

브라우저로 이동하여 API를 누르십시오. http://localhost:5000.

당신은 볼 것입니다 Hello, we have Flask in a Docker container 메시지.

다음 명령을 사용하여 현재 실행 중인 컨테이너를 확인할 수 있습니다.

docker ps

실행 중인 컨테이너를 중지하려면 다음 명령을 실행할 수 있습니다.

docker stop 

이렇게 하면 컨테이너가 정상적으로 중지됩니다. 컨테이너를 중지하는 보다 적극적인 방법은 다음과 같습니다.

docker kill 

컨테이너를 다시 시작, 일시 중지 및 일시 중지 해제할 수도 있습니다.

docker restart 
docker pause 
docker unpause 

컨테이너에 대한 로그를 보려면 다음을 사용할 수 있습니다.

docker logs 

그리고 그게 다야!

반응형