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

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

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

こんにちは!😄
前回()では、Flaskアプリとcompose.yamlを作成し、Dockerfileとの連携準備が整いました。
今回はいよいよ実践編!
Flaskコンテナを実際にビルド・起動して、ブラウザからアクセスするところまでを解説していきます。

このシリーズでは次の3部構成で進めてきました。

  1. Dockerfileとcompose.yamlを連携してFlask環境を構築する①
  2. Dockerfileとcompose.yamlを連携してFlask環境を構築する②
  3. Dockerfileとcompose.yamlを連携してFlask環境を構築する③ ← 今回はここ!

Flaskコンテナの作成と実行

準備ができたら、いよいよFlaskコンテナを作成して起動します。
実行コマンドはとてもシンプルです。👇

docker compose up -d
オプション説明
upcompose.yamlの設定をもとにコンテナを作成・起動
-dバックグラウンド(デタッチドモード)で実行

 このコマンドを実行すると、DockerがDockerfileを読み込み、FlaskをインストールしたPythonイメージをビルドします。

実行結果👇

PS C:\Users\joeac\Desktop\docker\flask1> docker compose up -d
[+] Building 32.8s (10/10) FINISHED
(省略)
[+] Running 3/3
 ✔ flask1-flaskweb1              Built                                            0.0s
 ✔ Network flask1_default        Created                                          0.0s
 ✔ Container flask1-flaskweb1-1  Started                                          0.6s
PS C:\Users\joeac\Desktop\docker\flask1>

最後に 「Container flask1-flaskweb1-1 Started」 と表示されていればOK!
これでコンテナが正常に起動しています。🎉

Flaskアプリにアクセスしてみよう

コンテナが起動したら、ブラウザを開いて以下のURLにアクセスします。

http://localhost:5000

Flaskアプリが動いていれば、画面に 「Hello World!」 と表示されます。

これでFlask環境の起動成功です!👏

Flaskアプリを編集して確認

コンテナがきちんとホストと同期しているかを確認するために、
Flaskアプリの内容を少し変更してみましょう。

app.pyの変更

以下のコマンドでVSCodeを開きます。

code ./src/app.py

そして、次のように「Hello World!」を「Hello Flask!」に変更して保存します👇

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello Flask!"  # ← ここを変更!

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

プログラムを上のように変更して保存します。

変更が反映される仕組み

このFlask環境では、ホストとコンテナの間で「バインドマウント(volumes)」を設定しています。

 つまり、ホスト側でapp.pyを修正すると、その変更が即座にコンテナ内にも反映されるようになっています。

項目内容
ホスト./src/app.py
コンテナ/usr/src/app/app.py
設定内容volumes: ./src:/usr/src/app

変更が反映されないときの対処

FlaskのバージョンやPythonの組み合わせによっては、
変更がすぐに反映されないこともあります。

その場合は、以下のコマンドでコンテナを再起動しましょう。

docker compose restart

実行結果👇

PS C:\Users\joeac\Desktop\docker\flask1> docker compose restart
[+] Restarting 1/1
 ✔ Container flask1-flaskweb1-1  Started  

再起動後にブラウザをリロードすると、今度は 「Hello Flask!」 と表示されるはずです✨

Flaskアプリが表示されないときの確認ポイント

Flaskがうまく起動しない場合は、以下の原因が考えられます。

原因対応策
PythonとFlaskのバージョンの相性Dockerfileで指定しているバージョンを見直す。
app.pyの構文エラー編集ミスがないか確認
ポート競合5000番ポートを他のアプリが使用していないか確認

それでも動かない場合は、ログの確認を行いましょう。

ログの確認方法

コマンド確認

docker compose logs
出力内容説明
Debug modeデバッグモードの状態
Running onFlaskが動作しているアドレス
GET / HTTP/1.1ブラウザからのアクセスログ

実行結果👇

PS C:\Users\joeac\Desktop\docker\flask1> docker compose logs
flaskweb1-1  |  * Debug mode: off
(省略)
flaskweb1-1  |  * Running on all addresses (0.0.0.0)
flaskweb1-1  |  * Running on http://127.0.0.1:5000
flaskweb1-1  |  * Running on http://172.18.0.2:5000
(省略)

Docker Desktopで確認

GUI派の方は、Docker Desktopからも確認できます。

1.「Containers」タブを開く

2.該当するFlaskコンテナ(flask1-flaskweb1-1)をクリック

3.右側の「Logs」タブで出力内容を確認

エラーがあれば赤文字で表示されます。
Flaskアプリの構文ミスなどもここで確認できます。

イラストで理解する:Flask実行までの流れ

まとめ

これで3部作の解説は完結です!🎯

ステップ内容
DockerfileでFlask入りPythonイメージを作成
Flaskアプリとcompose.yamlを用意
コンテナをビルド・起動して実行確認

今回学んだポイントをおさらいすると、

  • compose.yamlだけでもコンテナは起動できるが、オリジナルイメージを作りたいならDockerfileが必要!
  • Flaskのコードを修正すると、バインドマウントで即反映!
  • うまく動かないときは docker compose logs で原因をチェック!

これであなたも、DockerfileとComposeを組み合わせたFlask開発環境構築の基本マスターです。
 次のステップでは、この環境を応用してデータベース連携や本番環境向け構成にも挑戦してみましょう! 🚀