Python

FlaskをDockerで環境構築する方法を解説します!

こんにちは、

InfraAcademyというインフラ学習サービスを運営しております、ryuと申します。

今回の記事では、PythonのWebフレームワークであるFlaskをDockerを使って動かしたいと思います。Dockerはコンテナとして、さまざまな環境を仮想的に構築する技術です。Flaskの動作環境をDockerを使って構築したいと思います。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

FlaskをDockerで環境構築する方法を解説

ここでは、FlaskをDockerで環境構築する方法を解説します。

Dockerの使い方の解説は特にしないので、Dockerの使い方がわからないという方は、こちらのDocker入門講座の受講をおすすめします。

FlaskをDockerで動作させるためには、まずDockerfileを作成します。

Dockerfileの作成

Dockerfileの作成の前にディレクトリを作成しておきましょう。ディレクトリ名などは任意で大丈夫です。

mkdir flask-docker
cd flask-docker

続いて、Dockerfileを作成します。

vi Dockerfile

Dockerfileの中身は以下の通りです。

# ベースイメージを指定
FROM python:3.9-slim

# 作業ディレクトリを設定
WORKDIR /app

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
    build-essential \
    procps \
    && rm -rf /var/lib/apt/lists/*

# 必要なPythonパッケージをインストール
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションのソースコードをコピー
COPY . .

# ポートを公開
EXPOSE 5000

# アプリケーションを実行
CMD ["python", "app.py"]

requirements.txtの作成

続いて、requirements.txtの作成を行います。

vi requirements.txt

ファイルの中身を以下のように記述します。

Flask==2.1.1
werkzeug==2.0.3

app.pyの作成

続いて、app.pyファイルの作成を行います。

vi app.py

ファイルの中身を以下のように記述しましょう。

from flask import Flask

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(debug=True)

このファイルでは、Webページにアクセスすると、「Hello World!」と表示するように記述しています。

これで、設定ファイルなどの準備は完了です。

dockerコンテナの起動

最後にDockerコンテナを起動させてみましょう。

docker build -t flask-docker .

docker run -p 5000:5000 flask-docker

Flaskをコンテナとして起動させたら、Webブラウザからアクセスしてみましょう。「http://127.0.0.1:5000」にアクセスすると、以下のように「Hello World!」と表示されます。

これでコンテナとして動くことが確認できました。

docker-composeファイルから起動させる

続いて、docker-composeファイルから起動させるようにしましょう。

docker-compose.ymlの記述

vi docker-compose.yml

docker-compose.ymlファイルの中身は以下のように記述します。

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app

docker-composeでコンテナの起動

docker-compose.ymlファイルの準備ができたら、起動させましょう。起動するには、以下のコマンドを実行します。

docker-compose up -d

先ほどと同様に、「http://127.0.0.1:5000」へアクセスできれば成功です。

本番環境へ公開する場合

本番環境へ公開する場合は、GunicornでFlaskを動作させることをおすすめします。

この場合、Dockerfileの最後の行を以下の通りに変更します。

# アプリケーションを実行
#CMD ["python", "app.py"] ←ここをコメントアウト

CMD ["gunicorn", "--reload", "-b", "0.0.0.0:5000", "app:app"]

また、requirements.txtの中に以下を追加しましょう。

gunicorn==20.1.0

本番環境では、Gunicornがなぜ良いのかについては、こちらの記事で詳しく解説しています。

関連記事:flask runとgunicornコマンドって何が違うの?

まとめ

今回の記事では、FlaskをDockerで環境構築する方法について解説しました。Dockerを使うと、チーム開発する際や、デプロイする際に便利です。

Dockerを有効活用して、Webの開発スピードを効率化していきましょう。

当ブログでは、このようなITやインフラに関する記事を発信しているので興味のある方は引き続きご覧ください。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST