Docker Composeでflask開発環境構築

はじめに

flaskの開発環境をDockerで構築していきます。

Dockerfileでflaskアプリが実行されるコンテナイメージを用意し、Docker Composeで実行します。

Dockerについては下記を参考してください。

いまさらDocker入門
はじめにいまさらながらDockerについてまとめてみました。なるべく動かしながらDockerを理解していきたいと思います。DockerとはDockerとは、コンテナを活用した開発・運用を可能にするソフトウェアです。コンテナを使える...

Docker Composeについては下記を参考にしてください。

Docker ComposeでNext.js開発環境構築
はじめにNext.jsの開発環境をDockerで構築していきます。DockerfileでNext.jsのアプリが実行されるコンテナのイメージを用意し、Docker Composeで実行する方法をとります。そうすることでバックエンドとして...

flaskアプリ作成

まずはflaskのアプリを作成します。

flaskについては下記で解説しています。

いまさらFlask超入門
はじめにFlaskについて、これから使い始める人向けに超簡単なアプリを作成して、実行してみるまでを紹介したいと思います。利用するバージョンは以下の通りです。>>> flask.__version__'2.0.1...

まずはapp.pyにシンプルなアプリの実装をします。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "index page"

必要なライブラリをrequirements.txtに記載しておきます。

flask==2.0.1

以下のディレクトリ構成になります。

.
└── app
    ├── app.py
    └── requirements.txt

Dockerfile作成

次にflaskアプリを実行するコンテナイメージの元となるDockerfileを作成します。

Pythonの公式イメージを利用して、FLASK_APPの環境変数の設定とライブラリのインストールをしています。

FROM python:3.9.7-slim-buster

WORKDIR /usr/src/app
ENV FLASK_APP=app

COPY /app/requirements.txt ./

RUN pip install --upgrade pip
RUN pip install -r requirements.txt
Docker Hub

docker-compose.yml作成

続いて、docker-compose.ymlを作成します。

flaskアプリを実行するときに--host=0.0.0.0オプションを付けないとコンテナのアプリにアクセスできなくなります。

version: "3"
services:
  app:
    build: .
    ports:
      - "5000:5000"
    container_name: app
    volumes:
      - ./app:/usr/src/app
    command: flask run --host=0.0.0.0

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

.
├── app
│   ├── app.py
│   └── requirements.txt
├── Dockerfile
└── docker-compose.yml

コンテナ実行

必要なファイルの準備が完了したので、コンテナを実行します。

docker-compose up -d

localhost:5000にアクセスするとアプリを確認することができます。

参考

タイトルとURLをコピーしました