Docker로 Flask 애플리케이션 실행하기

0

Docker는 현대 개발 환경에서 필수적인 도구로 자리잡았습니다. Flask와 같은 웹 프레임워크를 Docker를 통해 실행하고 배포할 수 있다면 개발 및 배포 과정이 크게 간소화됩니다. 여러분이 복잡한 개발 환경을 손쉽게 관리하고 싶다면, Docker는 매우 효과적인 도구입니다. 이번 글에서는 Docker를 이용해 Flask 애플리케이션을 구성하고 실행하는 방법을 알아보겠습니다.

1. 프로젝트 디렉토리 구성

우선 Docker 환경에서 Flask 애플리케이션을 실행할 디렉토리를 준비해야 합니다. 이 디렉토리에는 Flask 코드와 Docker 설정 파일이 포함될 것입니다.

mkdir flask-docker-app
cd flask-docker-app

이 디렉토리에서 다음과 같은 파일들을 생성하고 관리할 것입니다:

  • `app.py`: Flask 애플리케이션의 메인 코드
  • `requirements.txt`: Flask 및 의존성을 정의하는 파일
  • `Dockerfile`: Docker 이미지 빌드를 위한 설정 파일

2. Flask 애플리케이션 코드 작성

먼저, `app.py` 파일을 생성하여 간단한 Flask 애플리케이션 코드를 작성합니다. 이 코드는 Docker 컨테이너 내에서 실행될 것입니다.

nano app.py

다음과 같은 간단한 코드를 입력하세요:

from flask import Flask

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

이 코드는 “/” 경로에 접속했을 때 “Hello, Docker!”라는 메시지를 출력합니다. 매우 간단하지만, Docker 환경에서 작동할 수 있는 훌륭한 예제입니다.

3. `requirements.txt` 파일 생성

Flask를 포함한 필요한 패키지를 관리하기 위해 `requirements.txt` 파일을 생성합니다.

nano requirements.txt

다음 내용을 입력합니다:

Flask==2.3.2

이 파일은 Docker 컨테이너 안에서 Flask를 설치하는 데 사용됩니다.

4. Dockerfile 작성

Docker 이미지를 빌드하기 위한 설정을 정의하는 `Dockerfile`을 작성합니다.

nano Dockerfile

다음 내용을 입력하세요:

# Python 3.9 버전의 slim 이미지를 사용
FROM python:3.9-slim

# 작업 디렉토리를 /app으로 설정
WORKDIR /app

# 현재 디렉토리의 파일들을 컨테이너로 복사
COPY . /app

# 필요한 패키지를 설치
RUN pip install --no-cache-dir -r requirements.txt

# 애플리케이션 실행
CMD ["python", "app.py"]

이 `Dockerfile`은 Python 3.9 버전을 기반으로 하며, 컨테이너 내부에서 Flask를 설치하고 실행할 준비를 합니다.

5. Docker 이미지 빌드

파일 구성이 완료되었으면, Docker 이미지를 빌드할 수 있습니다. 다음 명령어를 사용하여 이미지를 빌드하세요.

docker build -t flask-docker-app .

이 명령어는 `flask-docker-app`이라는 이름으로 이미지를 빌드합니다.

6. Docker 컨테이너 실행

이제 Docker 이미지를 실행해보겠습니다. 다음 명령어로 컨테이너를 실행하세요:

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

이 명령어는 다음과 같은 역할을 합니다:

  • `-d`: 백그라운드에서 컨테이너를 실행합니다.
  • `-p 5000:5000`: 로컬 머신의 5000번 포트를 컨테이너의 5000번 포트와 연결합니다.

이제 브라우저에서 `http://localhost:5000`에 접속하면 “Hello, Docker!”라는 메시지를 확인할 수 있습니다.

7. Docker Compose로 관리 (선택 사항)

보다 복잡한 설정이나 여러 컨테이너를 관리해야 한다면, `docker-compose`를 사용할 수 있습니다. 다음 `docker-compose.yml` 파일을 생성하여 컨테이너 관리를 더욱 간편하게 할 수 있습니다.

nano docker-compose.yml

다음 내용을 입력하세요:

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"

이제 `docker-compose` 명령어를 사용하여 애플리케이션을 실행할 수 있습니다:

docker-compose up -d

결론

Flask 애플리케이션을 Docker로 쉽게 구성하고 실행하는 방법을 알아보았습니다. Docker는 개발 환경을 통합하고 배포 과정을 단순화하는 강력한 도구로, Flask와 같은 경량 프레임워크를 컨테이너 내에서 실행할 때 매우 유용합니다. 이제 직접 이 과정을 따라해보시고, 개발 환경을 효율적으로 관리하는 기쁨을 경험해보세요.

Leave a Reply