gunicornとflaskによるDockerでの開発

2022/12/25に公開

はじめに

クラウドサービスでコンテナーの検証をすることが多くその際に作ったものを備忘録として残しておきます。
そのため、flask アプリの方の内容は薄いです。あくまでもコンテナーで使用するために作成したものなので、Hello worldのみとなっています。

環境

ローカル環境: Linux(WSL)
Python 3.10.9
Docker version 20.10.21

ディレクトリ

最終的に作成するディレクトリ構成は以下のようになります。

project
 ├── src 
 ├── Dockerfile 
 └── requirements.txt # これはなくてもよい

ライブラリインストール

venv環境で行います。そのため、まずは、venv 環境にアクセスします。

python3 -m venv venv
source venv/bin/activate

次にライブラリをインストールします。

pip install gunicorn flask

flask App

src/app.py の内容は以下のようにします。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return {'message': 'Hello world.'}

Dockerfile

Dockerfile は以下のようにします。

FROM python:3.10

WORKDIR /app

COPY . .

# requirements.txt 
RUN pip install -r requirements.txt

EXPOSE 8000 2222

# 実行コマンド指定
ENTRYPOINT ["gunicorn", "-w", "2", "-b", "0.0.0.0", "src.app:app"]

Run

docker build --tag xxx .
ocker run -d -p 8000:8000 --name xxx -t xxx

おわりに

今回は本当にクラウドのコンテナーサービス等にデプロイする用に作成したアプリを作りました。これを使用して、デプロイ検証などをやっていければと思います。

Discussion