언어 및 프레임워크 가이드
Flask 컨테이너 앱 설정 및 배포 가이드
13 분
back4app containers는 flask 애플리케이션을 호스팅하기 위한 완벽한 플랫폼입니다 docker화된 flask 앱을 자동으로 배포할 수 있는 기능을 통해, 확장 가능하고 유연한 환경에서 프로젝트를 손쉽게 시작할 수 있습니다 이 포괄적인 가이드에서는 back4app containers에서 flask 애플리케이션을 준비하고 배포하는 과정을 안내하며, 간단한 프로젝트부터 더 복잡한 설정까지 모든 것을 다룹니다 질문이나 의견이 있으시면, back4app containers의 flask에 대한 논의를 위해 slack의 #containers 채널에서 대화에 참여해 주세요 언제든지 community\@back4app com으로 연락하실 수도 있습니다 언제든지 back4app containers에서 작동하는 flask 프로젝트 샘플을 확인하고 싶다면 다음으로 가세요 https //github com/templates back4app/containers python flask sample https //github com/templates back4app/containers python flask sample 1 flask 애플리케이션 준비하기 flask 애플리케이션이 올바르게 구조화되어 있고, 템플릿 및 정적 파일을 포함한 모든 필요한 파일이 프로젝트 디렉토리에 정리되어 있는지 확인하세요 더 복잡한 프로젝트의 경우, 적절한 앱 팩토리 설정이 되어 있는지 확인하고 flask 모범 사례를 따르세요 2 create a requirements txt 파일 필요한 모든 종속성과 그 버전을 requirements txt 파일에 나열하십시오 이 파일은 docker 이미지를 빌드할 때 필요한 패키지를 설치하기 위해 dockerfile에서 사용됩니다 다음은 flask 애플리케이션을 위한 샘플 requirements txt 파일로, 다양한 프로젝트에서 사용할 수 있는 일반적인 종속성을 포함하고 있습니다 특정 애플리케이션에 필요에 따라 패키지를 추가하거나 제거하십시오 requirements txt flask==2 1 1 gunicorn==20 1 0 werkzeug==2 1 1 jinja2==3 1 0 markupsafe==2 1 1 itsdangerous==2 1 1 click==8 1 2 sqlalchemy==1 4 29 flask sqlalchemy==2 5 1 flask migrate==3 1 1 flask login==0 5 0 flask wtf==1 0 3 wtforms==3 0 2 flask cors==3 1 1 flask mail==0 9 1 flask restful==0 3 9 flask script==2 0 6 requests==2 27 1 3 create a dockerfile 애플리케이션의 docker 이미지를 정의하기 위해 dockerfile 을 작성하십시오 적절한 기본 이미지(예 python 3 x slim 사용), requirements txt 파일에서 종속성을 설치하고, 프로젝트 파일을 복사하고, 올바른 포트를 노출하며, flask 애플리케이션을 시작하기 위한 적절한 명령을 지정해야 합니다(예 gunicorn ) 예제 1 기본 flask 애플리케이션 이 dockerfile은 wsgi 서버로 gunicorn을 사용하는 간단한 flask 애플리케이션을 위한 것입니다 dockerfilecopy code# base image from python 3 9 slim \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8080 \# command to start the server cmd \["gunicorn", " b", "0 0 0 0 8080", "app\ app"] 예제 2 waitress를 사용하는 flask 애플리케이션 (대체 wsgi 서버) 이 dockerfile은 waitress를 사용합니다 waitress는 생산 환경에 적합한 대체 wsgi 서버로 gunicorn 대신 사용할 수 있습니다 dockerfilecopy code# base image from python 3 9 slim \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8080 \# command to start the server cmd \["waitress serve", " host=0 0 0 0", " port=8080", "app\ app"] 다음 사항을 추가해야 합니다 waitress 를 requirements txt 파일에 추가하세요 예제 3 gunicorn과 작업자 최적화를 사용하는 flask 애플리케이션 이 dockerfile은 성능 향상을 위해 작업자 최적화와 함께 gunicorn을 사용합니다 사용 가능한 cpu 코어에 따라 gunicorn 작업자 프로세스의 수를 조정합니다 dockerfilecopy code# base image from python 3 9 slim \# install build dependencies and curl run apt get update && apt get install y no install recommends \\ build essential \\ curl \\ && rm rf /var/lib/apt/lists/ \# working directory workdir /app \# copy requirements file and install dependencies copy requirements txt requirements txt run pip install no cache dir r requirements txt \# copy the rest of the project files copy \# expose the server port expose 8080 \# calculate the number of worker processes based on the number of cpu cores cmd \["sh", " c", "gunicorn b 0 0 0 0 8080 workers $(($(nproc all) 2 + 1)) app\ app"] 4 애플리케이션을 로컬에서 테스트하기 docker 이미지를 로컬에서 빌드하고 실행하여 flask 애플리케이션이 예상대로 작동하는지 확인하십시오 back4app containers에 배포하기 전에 문제나 오류를 해결하십시오 docker build t your app name docker run p 8080 8080 your app name 5 프로젝트를 git 리포지토리에 푸시하기 불필요하거나 민감한 파일을 리포지토리에서 제외하기 위해 gitignore 파일을 생성하십시오 (예 pycache , env , pyc , 등) git 리포지토리를 초기화하고, 프로젝트 파일을 커밋한 후, 원격 리포지토리(예 github)에 푸시하십시오 6 백4앱 컨테이너에 애플리케이션 배포하기 백4앱 계정을 만든 후, 문서에 나열된 단계를 따를 수 있습니다 1 github 리포지토리를 백4앱과 연결하기 2 배포를 위한 프로젝트 준비하기 요약하자면, 컨테이너는 dockerfile에 자세히 설명된 지침을 따르고 애플리케이션을 생성하기 시작합니다 7 배포 모니터링 백4앱 컨테이너 대시보드에서 배포 로그와 상태를 주의 깊게 살펴보세요 배포 중 발생하는 오류나 문제를 해결하세요 더 복잡한 프로젝트의 경우, 모든 필요한 서비스(예 데이터베이스 또는 외부 api)가 올바르게 구성되고 접근 가능하도록 하세요 애플리케이션의 모든 실행 로그를 나열하는 로그 섹션이 있다는 점에 유의하세요 애플리케이션에 문제가 있는지 확인하기 위해 이를 주의 깊게 살펴보는 것도 중요합니다 8 문제 해결 일반적인 배포 오류는 여기 flask 애플리케이션을 배포할 때 발생할 수 있는 다른 일반적인 오류는 다음과 같습니다 잘못된 호스트 구성 flask 애플리케이션은 백4앱 컨테이너에 배포할 때 호스트 0 0 0 0에서 실행되도록 구성해야 합니다 애플리케이션이 localhost 또는 127 0 0 1을 사용하고 있다면 외부에서 접근할 수 없을 수 있습니다 호환되지 않거나 누락된 종속성 필요한 모든 종속성이 requirements txt 파일에 나열되어 있고, 그 버전이 서로 및 애플리케이션 코드와 호환되는지 확인하십시오 누락되거나 호환되지 않는 종속성은 런타임 오류를 초래할 수 있습니다 데이터베이스 연결 문제 flask 애플리케이션이 데이터베이스에 의존하는 경우, 애플리케이션 구성에서 연결 문자열과 자격 증명이 올바르게 설정되어 있는지 확인하십시오 또한 back4app containers 환경에서 데이터베이스에 접근할 수 있는지 확인하십시오 애플리케이션 충돌 또는 처리되지 않은 예외 flask 애플리케이션 코드에서 처리되지 않은 예외나 충돌은 배포 실패 또는 예기치 않은 동작을 초래할 수 있습니다 애플리케이션 로그에서 오류 메시지를 확인하고 코드의 문제를 해결하십시오 잘못 구성된 wsgi 서버 wsgi 서버(예 gunicorn 또는 waitress)가 dockerfile에서 올바르게 구성되어 있고, 올바른 진입점을 사용하여 flask 애플리케이션을 시작하는지 확인하십시오(예 app\ app) 잘못된 환경 변수 또는 구성 애플리케이션이 특정 환경 변수나 구성 파일에 의존하는지 확인하고, back4app containers 환경에서 올바르게 설정되어 있는지 확인하십시오 8 애플리케이션 확장 추가 리소스나 수평/수직 확장이 필요한 더 복잡한 프로젝트의 경우, 증가된 트래픽과 부하를 처리하기 위해 back4app containers 요금제를 업그레이드하는 것을 고려하십시오 9 샘플 애플리케이션 샘플 flask 애플리케이션 프로젝트는 다음으로 이동할 수 있습니다 https //github com/templates back4app/containers python flask sample https //github com/templates back4app/containers python flask sample