만약 Docker와 컨테이너에 대해 처음이라면, Docker를 사용하여 Python Flask API 애플리케이션을 배포하는 것은 시작하기에 좋은 방법입니다. Docker는 가벼운 기술과 보안을 통해 애플리케이션을 컨테이너화하여 빠른 배포를 지원합니다.
이 튜토리얼에서는 Docker 컨테이너에 Python Flask API 애플리케이션을 설정하고 배포하는 방법에 대해 스스로 마스터하는 방법을 배우게 될 것입니다.
준비되셨나요? 시작해봅시다!
전제 조건
단계별로 따라하려면 다음이 설치되어 있어야 합니다:
- Docker가 설치된 Ubuntu 머신. 이 튜토리얼은 Ubuntu 18.04.5 LTS와 Docker v19.03.8을 사용합니다.
- Ubuntu 머신에 설치된 Python v3.9 이상. 이 튜토리얼에서는 Python v3.9.2를 Ubuntu 머신에서 사용합니다.
- 이 튜토리얼에서 API를 테스트하는 데 사용되는 Ubuntu 머신에 Elinks 패키지를 설치합니다.
Python Flask API 애플리케이션 생성하기 (GET 및 POST API)
이 튜토리얼을 시작하려면 Python Flask 애플리케이션을 생성하세요. Flask는 Python으로 작성된 가벼운 WSGI 마이크로 웹 애플리케이션 프레임워크입니다. Flask는 Python으로 웹 애플리케이션을 만드는 데 편리한 도구와 기능을 제공합니다.
Python Flask 애플리케이션을 생성하기 전에 Python Flask와 Flask가 애플리케이션을 실행할 Python 가상 환경을 설치합니다.
1. 좋아하는 SSH 클라이언트를 사용하여 Ubuntu 머신에 로그인합니다.
2. 다음으로 아래 명령을 실행하여 docker_python_flask_demo라는 디렉터리를 만들고 해당 디렉터리로 전환합니다. 이 디렉터리는 애플리케이션을 실행하기 위해 Python과 Docker가 필요로하는 모든 파일을 보관합니다.
3. 아래 pip 명령을 실행하여 Flask가 응용 프로그램을 실행하기 위해 필요한 Python 가상 환경(virtualenv)을 설치합니다. Python 가상 환경은 자체 Python 이진 파일과 애플리케이션별로 설치된 패키지를 제공하여 다른 응용 프로그램과의 충돌을 피합니다.

4. 아래 virtualenv 명령을 실행하여 venv 모듈을 사용하여 가상 환경을 생성하고 활성화합니다.

5. 이제 아래 명령을 실행하여 pip 패키지 관리자를 사용하여 Python flask 패키지를 설치합니다.
6. 다음 명령을 실행하여 가상 환경에서 패키지를 활성화한 다음 설치하거나 사용할 수 있습니다. 이 명령은 VIRTUAL_ENV
환경 변수를 수정하여 가상 환경을 가리키도록 하고, 경로에 가상 환경 Python 이진 파일을 먼저 추가하여 올바른 이진 파일을 실행합니다.
7. 하나의 파일을 더 만들어 requirements.txt로 이름을 지정하고 아래에 플라스크 애플리케이션의 종속성을 정의합니다.
8. 텍스트 파일 ~/docker_python_flask_demo/app.py를 생성하고 아래의 Python 코드를 파일에 채웁니다.
아래의 Python 코드는 Python flask
클래스를 가져오고 app
이라는 클래스 인스턴스를 만듭니다. app
클래스 인스턴스에는 사용자가 /login
페이지로 요청을 보낼 때 실행되는 두 개의 login()
함수가 포함되어 있습니다.
success()
함수는 브라우저에 환영 메시지 “사용자 이름”을 표시하는 것으로 실행됩니다.
9. 새 파일을 하나 더 만들어 ~/docker_python_flask_demo/form.html이라고 명명하고 아래 코드를 복사/붙여넣기하십시오.
아래의 HTML 코드를 실행하면 이름을 제공하는 텍스트 입력란과 제출 버튼이 있는 양식이 생성됩니다.
사용자 이름을 제공하고 제출 버튼을 누르면 즉시 포스트 요청이 전송되고 Flask가 다른 기능을 실행하고 http://localhost:5000/success/<username>에 새 웹 페이지를 엽니다.
10. 마지막으로, 시스템에서 로컬로 응용 프로그램(app.py
)이 작동하는지 확인하기 위해 아래의 Python
명령을 실행하십시오.
아래에서 볼 수 있듯이, 응용 프로그램은 Ubuntu 머신에서 성공적으로 실행되지만 Docker에서는 그렇지 않습니다. 다음 섹션에서 Docker에서 동일한 응용 프로그램을 시작할 것입니다.

Python Flask API 응용 프로그램 배포를 위한 Dockerfile 생성
이제 로컬 시스템에서 Python Flask 응용 프로그램이 작동하는 것을 확인했습니다. 그러나 Docker에 응용 프로그램을 배포하기 전에 Dockerfile을 만들어서 모든 지시사항을 정의할 것입니다.Docker 이미지를 빌드하기 위한.
~/docker_python_flask_demo디렉터리에 Dockerfile이라는 파일을 만들고 아래 내용을 Dockerfile에 복사/붙여넣으십시오.
도커는 기본 이미지 (ubuntu:18.04
) 위에 새로운 도커 이미지를 빌드하기 위해 이 Dockerfile을 사용합니다.
이제, Python Flask 애플리케이션을 실행하기 위해 필요한 모든 파일이 작업 디렉토리 (~/docker_python_flask_demo)에 포함되어 있는지 확인하기 위해 아래의 tree
명령을 실행하세요.

Python Flask API 애플리케이션을 위한 도커 이미지 빌드
이제 Python Flask 애플리케이션을 배포하기 위해 필요한 파일들이 있지만, 이미지를 빌드하지 않으면 이 파일들은 아무 작업도 수행하지 않습니다. Dockerfile에서 설정한 명령을 기반으로 도커 이미지를 빌드하기 위해 docker build
명령을 실행합니다.
다음 명령을 사용하여 작업 디렉토리(.
)에 Docker 이미지를 빌드하십시오. 이 명령은 이미지를 flask-image
버전 1(:v1
)로 태그합니다(-t
).

이제 모든 사용 가능한 이미지를 나열하려면 아래의 docker
명령을 실행하십시오.
아래에서 REPOSITORY와 같은 여러 속성이 반환됩니다. REPOSITORY 이름이 flask-image이며 버전(v1)으로 태그되어 있음을 주목하십시오.

Docker 컨테이너에서 Python Flask 애플리케이션 실행
Docker 이미지를 만든 후 Docker 컨테이너에서 Python 플래시 애플리케이션을 실행할 수 있습니다. Docker 컨테이너는 코드와 해당 종속성을 묶어 애플리케이션을 빠르게 실행합니다.
다음을 수행하려면 다음 명령을 실행하십시오:
- 컨테이너를 백그라운드 모드(
-d
)로 시작하여 생성 시 콘솔 출력을 반환합니다. - Docker 호스트 포트(
-p 5000:5000
)를 컨테이너의 포트와 매핑합니다. flask-image:v1
컨테이너를 시작합니다.
2. 다음으로, 아래의 docker
명령을 실행하여 Docker 엔진에 있는 모든 컨테이너를 나열합니다. Docker가 컨테이너를 성공적으로 생성했는지 확인하세요.

3. 마지막으로, 다음 명령을 실행하여 elinks를 사용하여 Ubuntu 머신에서 웹 브라우저를 엽니다.
이 명령은 터미널에서 웹 브라우저를 열고 이름을 요청합니다.
이름을 입력하고 제출 버튼을 누르세요.

4. 아래에서 확인할 수 있듯이, 제출 버튼을 누른 후에 로그인 기능이 Flask 애플리케이션에서 성공 기능으로 리디렉션됩니다.

결론
이 튜토리얼은 Python Flask API Docker 컨테이너를 Docker 이미지를 사용하여 설정하는 과정을 안내하기 위한 것이었습니다. 또한 Dockerfiles을 사용하여 Python Flask 컨테이너를 시작하는 방법에 대해 알아보았습니다. 이를 통해 선택한 대로 사용자 정의된 컨테이너를 편집하고 빌드할 수 있습니다.
그러면 Docker 컨테이너에 배포할 다른 응용 프로그램이 있나요? 어쩌면 Docker MongoDB 컨테이너가 있을까요?