Data Engineering/Docker

[Linux/Docker] Flask로 app을 만들고 Docker compose로 컨테이너화해보자

seoraroong 2024. 8. 24. 16:19

Flask 간단히 알아보자

Flask는 파이썬 프로그래밍 언어로 작성된 웹 프레임워크이다.

 

마이크로 프레임워크 (Micro Framework)

Flask는 마이크로 프레임워크로, 기본적으로 웹 애플리케이션을 위한 핵심 기능만들 가볍게 포함하고 있다.

기본적으로 제공하는 기능은 라우팅, 템플릿 렌더링, 요청 및 응답 처리가 있고, 복잡한 기능은 필요에 따라 확장할 수 있다.

 

라우팅 (Routing)

- URL 매핑

: Flask의 라우팅 시스템은 URL과 뷰 함수 (컨트롤러)를 매핑해 사용자가 특정 URL로 접근할 때 해당 뷰 함수가 호출된다.

- HTTP 메소드 지원

: GET, POST, PUT, DELETE 등의 다양한 HTTP 메소드를 지원해, 다양한 요청을 처리할 수 있다.

 

템플릿 엔진 (Template Engine)

- Jinja2

: Flask는 jinja2 템플릿 엔진을 사용해 동적 HTML 페이지를 생성한다.

- 템플릿 상속

: HTML 템플릿의 재사용과 구조화가 가능하며 템플릿 상속 기능을 통해 공통 레이아웃을 설정하고 여러 페이지에서 사용할 수 있다.

 

요청 및 응답 처리 (Response & Request)

- 요청 객체

: 클라이언트로부터의 HTTP 요청을 request 객체를 통해 접근하여 요청 데이터를 쉽게 추출할 수 있다.

- 응답 객체

: 서버에서 클라이언트로 보내는 응답을 response 객체를 통해 설정하고 응답 내용과 상태 코드를 조작할 수 있다.

 

 

Jupyter lab에 Flask를 설치하기

- 파이썬 설치하기 

 

- 가상 환경 만들기

python3 -m venv 가상_환경_이름

 

- 가상 환경 실행 후 Jupyter lab을 설치하기

 

- Jupyter lab 접속하기

 

- Jupyter lab에서 Flask 설치하기

 

 

 

실습용  app.py 파일을 만들어 간단한 화면 구성하기

 

- ipynb 파일이 아닌 새로운 .py 파일을 만들어 다음과 같이 Hello World!를 화면에 출력하는 API를 만든다.

 

 

 

Flask app 파일을 실행하고 브라우저에서 확인하기

- 가상 환경에 접속해서 생성한 app.py 파일 실행하기

 

- localhost:8000으로 접속해서 잘 뜨는지 확인

 

 

위 과정을 Docker Compose를 이용해 진행해보자

 

compose.yml 파일 생성하기

- 새로운 디렉토리를 생성하고 디렉토리 하위에 compose.yml 파일을 만들어준다.

 

 

Dockerfile 생성하기

- app 디렉토리에 Dockerfile을 만들어준다.

gedit Dockerfile

 

- app.py 파일을 app 디렉토리의 하위로 이동시켜준다.

(app.py 파일과 docker compose를 위해 생성한 파일들이 동일한 경로에 있게 설정해주어야 한다.)

mv app.py myflask2/app

 

 

 

Requirements.txt 파일 생성하기

- app 디렉토리 하위에 requirements.txt 파일을 만들고 다음과 같이 작성해준다.

vi myflask2/app/requirements.txt

 

 

 

컨테이너 빌드하고 실행하기

 

 

- localhost:8000에 접속해서 확인하기