Flask 앱을 ​​Digital Ocean의 앱 플랫폼에 배포하는 방법

나는 최근에 Digital Ocean의 새로운 앱 플랫폼에 내 사이드 ​​프로젝트howbigisthebaby.io를 배치하는 과정을 거쳤으며 다른 사람이 유용하다고 생각하는 경우(또는 적어도 내가 나중에 다시 방문하는 경우) 문서화하고 싶었습니다.


1부: Flask 앱의 환경 설정



1단계: 컴퓨터에 가상 환경 만들기

$ virtualenv venv -p Python3


2단계: 가상 환경 활성화

$ source venv/bin/activate


3단계: Flask 및 gunicorn 설치

$ pip install Flask gunicorn


4단계: requirements.txt 파일에서 요구 사항 고정

이제 Flask 패키지를 설치했으므로 App Platform이 나중에 설치할 수 있도록 이 요구 사항과 해당 종속 항목을 저장해야 합니다. 이제 pip를 사용하여 이 작업을 수행한 다음 정보를 requirements.txt 파일에 저장합니다.

$ pip freeze > requirements.txt


5단계: app.py에 Flask 앱용 코드를 작성합니다. 다음은 간단한 "hello world"앱입니다.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'



파트 2: Gunicorn 구성 설정



프로덕션 환경에서는 Flask의 내장 서버를 사용할 수 없으므로 Gunicron 웹 서버Why Nginx/Gunicorn/Flask?를 사용하겠습니다.

While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well and by default serves only one request at a time.
Source: Flask's docs



1단계: gunicorn 구성 파일 만들기

$ touch gunicorn_config.py


2단계: gunicorn_config.py 파일에 이 구성 추가

# inside gunicorn_config.py
bind = "0.0.0.0:8080"
workers = 2



파트 3: GitHub에 사이트 푸시



Digital Ocean 앱 플랫폼이 작동하는 방식은 GitHub 리포지토리와 동기화된다는 것입니다. 이 GitHub 리포지토리에 대한 모든 변경 사항은 Digital Ocean의 앱 플랫폼에 있는 앱에 자동으로 푸시됩니다.

1단계: GitHub.com에서 새 리포지토리 만들기
브라우저를 열고 GitHub로 이동하여 프로필로 로그인하고 flask-app이라는 새 리포지토리를 만듭니다.

2단계: 그런 다음 .gitignore 파일을 만들고 이 파일이 GitHub에 푸시되지 않도록 .pyc를 추가합니다.

$ git init
$ nano .gitignore



# inside .gitignore
.pyc


3단계: 리포지토리에 파일 추가 및 변경 사항 커밋

$ git add app.py gunicorn_config.py requirements.txt .gitignore
$ git commit -m "Initial Flask App"


4단계: 이전에 생성한 GitHub 리포지토리를 원격 리포지토리로 추가

$ git remote add origin https://github.com/your_username/flask-app


예: git remote add originhttps://github.com/ajot/hbb-flask-webhook

5단계: GitHub에 푸시

$ git branch -M main
$ git push -u origin main



4부: Digital Ocean의 앱 플랫폼에 배포


  • Digital Ocean에서 새 "앱"을 만듭니다.
  • 소스로 GitHub 선택
  • 방금 생성한 GitHub 리포지토리를 선택합니다
  • .
  • 프로모션에 따라 앱 만들기
  • 실행 명령을 다음으로 편집합니다. gunicorn --worker-tmp-dir/dev/shm app:app



  • 보너스 팁: Digital Ocean에서 환경 변수를 설정한 다음 다음과 같이 코드에서 액세스할 수도 있습니다.

    airtable_api_key = os.environ.get('airtable_api_key')
    airtable_base = os.environ.get('airtable_base')
    



    자원:
    How To Deploy a Flask App Using Gunicorn to App Platform | DigitalOcean

    좋은 웹페이지 즐겨찾기