このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Dockerfileとcompose.yamlを連携してFlask環境を構築する②

Dockerfileとcompose.yamlを連携してFlask環境を構築する②

こんにちは!😄
 前回()では、Dockerfileを使ってFlaskをインストールしたPythonイメージを作成する定義をしましたね。
 今回はその続きとして、Flaskアプリケーション(app.py)とcompose.yamlファイルを作って、コンテナを定義するところまでを行っていきます。

Dockerfileとcompose.yamlを連携させることで、
Flaskアプリをホストマシンと同期させつつ、自動ビルド&実行ができるようになります。

このシリーズでは次の3部構成で進めています。

Flaskアプリケーションの作成

まずはFlaskで動作確認用のアプリケーションを作りましょう。
このアプリはとてもシンプルで、「Hello, World!」を表示するだけです。

アプリ用ディレクトリの作成

アプリのコードをまとめて管理できるように、「src」というディレクトリを作ります。

mkdir src

実行結果

PS C:\Users\joeac\Desktop\docker\flask1> mkdir src

    Directory: C:\Users\joeac\Desktop\docker\flask1

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/12     1:55                src

この「src」フォルダの中に、Flaskアプリを作っていきます。

app.pyの作成

次にFlaskアプリの本体ファイル「app.py」を作ります。
以下のコマンドでVSCodeを起動します。

code ./src/app.py

エディタが開いたら、以下のコードを入力して保存してください👇

from flask import Flask

# Flaskアプリケーションのインスタンスを作成
app = Flask(__name__)

# ルートURLに対する処理を定義
@app.route("/")
def hello():
    return "Hello World!"

# アプリケーションを実行
if __name__ == "__main__":
    app.run(debug=True)

コードの解説

 このプログラムは、アクセスされたときに「Hello, World!」を返すだけの超シンプルなFlaskアプリです。

内容
from flask import FlaskFlaskライブラリを読み込みます。
app = Flask(__name__)Flaskアプリのインスタンスを生成。
@app.route("/")ルートURL / にアクセスがあったときの処理を登録。
def hello():
 return "Hello World!"
“Hello World!”を返す関数を定義。
app.run(debug=True)Flaskをデバッグモードで実行(コードを変更すると自動リロードされる)。

コンテナ作成後の確認

ここでは、まだ、このアプリの動作確認ができませんが、コンテナを作成したら、
ブラウザで以下のURLにアクセスして確認します。

http://localhost:5000/

「Hello, World!」と表示されれば成功です!✨

compose.yaml の作成

次に、FlaskアプリをDocker Composeで動かすためのcompose.yamlを作成します。

VSCodeで次のコマンドを実行します。

code compose.yaml

以下の内容を貼り付けて保存します👇

services:
  flaskweb1:
    build: .
    environment:
      FLASK_ENV: development
    ports:
      - "5000:5000"
    volumes:
      - ./src:/usr/src/app

設定内容の詳細

項目内容解説
servicesコンテナの定義今回は flaskweb1 という名前のコンテナを定義します。
buildDockerfileの場所を指定「.」は現在のディレクトリ(=Dockerfileがある場所)を意味します。
environment環境変数の設定FLASK_ENV: development によりデバッグモードで実行。コード変更時に自動リロードされます。
portsポートマッピングホストの5000番ポートを、コンテナ内の5000番に接続。ブラウザからアクセス可能になります。
volumesディレクトリ同期設定ホストの ./src をコンテナの /usr/src/app にマウント。ファイルの変更が即時反映されます。

つまりこの設定で、
ローカルでapp.pyを修正 → コンテナ側で即リロード → ブラウザに反映
という流れが可能になります。

ここまでの構成図

イメージで理解したい方のために、次のような構成図を思い浮かべてください👇

まとめ

ここまでで、Flaskアプリとcompose.yamlの作成が完了しました!

  • src ディレクトリにFlaskアプリ(app.py)を作成
  • compose.yaml でDockerfileを指定してFlaskコンテナを起動
  • volumes でホストとコンテナを同期

これでFlaskアプリの基本動作を確認できる準備が整いました。

 次回の「」では、いよいよコンテナを起動して実際にFlaskアプリを動かし、アクセス確認するステップに進んでいきます! 🚀