このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】Dockerfileとcompose.yamlの連携②

ここでは、Flaskアプリケーションと「compose.yaml」ファイルを作成していきます。
「Dockerfileとcompose.yamlの連携①」の続きです。
「Dockerfileとcompose.yamlの連携」は、次の3部に分けて解説します。
Flaskアプリケーションの作成
まず、Flaskアプリケーションを作成していきます。
以下の手順でFlaskアプリケーションを作成して「app.py」ファイルとして保存します。
Flaskアプリケーションを格納するディレクトリの作成
Flaskアプリケーションを格納する「src」ディレクトリを作成します。
・「mkdir src」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\flask1> mkdir src
Directory: C:\Users\joeac\Desktop\docker\flask1
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/07 23:53 src
作成した「src」ディレクトリの中にFlaskアプリケーションを格納していきます。
Flaskアプリケーションの作成
以下は、簡単なFlaskアプリケーション「app.py」です。このアプリケーションでは、ルートURL("/")にアクセスすると「Hello, World!」というメッセージを表示します。
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コンテナを実行させることが目的なので、プログラムの意味が分からなくても大丈夫です。一応、プログラムの解説をしておきます。
このコードでは、Flask
クラスを使用してFlaskアプリケーションのインスタンスを作成し、@app.route
デコレータを使用してルートURL("/")に対する処理を定義しています。hello()
関数は、ルートURLにアクセスすると呼び出され、"Hello, World!"というテキストを返します。
最後に、「if __name__ == "__main__":
」ブロック内で、アプリケーションをデバッグモードで実行するようにしています。
この「app.py」ファイルを作成し、Flaskアプリケーションとして実行すると、Flaskコンテナ上でアプリケーションが起動し、Webブラウザから「http://localhost:5000/」にアクセスすることで、「Hello, World!」というメッセージが表示されます。
ここでは、単純なFlaskアプリケーションを用いることにしますが、もちろん、本格的なFlaskアプリケーションを構築することもできます。
「app.py」の保存
・「code ./src/app.py」コマンドを実行し、上のプログラムを入力して保存します。

「compose.yaml」ファイルの作成
「compose.yaml」ファイルの内容は以下のとおりです。
services:
flaskweb1:
build: .
environment:
FLASK_ENV: development
ports:
- "5000:5000"
volumes:
- ./src:/usr/src/app
この設定では、flaskweb1という名前のサービスを定義し、Flaskアプリケーションを実行するためのコンテナを作成しています。作成されるコンテナは、現在のディレクトリにあるDockerfileを使用してビルドされ、FLASK_ENV環境変数がdevelopmentに設定され、ホストのポート5000とコンテナのポート5000がマッピングされ、ホストの「./src
」ディレクトリがコンテナ内の「/usr/src/app
」ディレクトリにマウントされます。

サービス名 | flaskweb1 |
---|---|
build | 「.」はカレントディレクトリにあるDockerfileを使用してイメージをビルドすることを指示しています。 |
environment | FLASK_ENV環境変数をdevelopmentに設定しデバッグモードで動かします。デバッグモードでは、プログラムを修正すると自動的にリロードして、エラーが発生した際に、ブラウザにエラーの詳細情報を表示します。 |
ports | ホストのポート5000とコンテナのポート5000をマッピングします。 |
volumes | ホストの./src ディレクトリをコンテナ内の/usr/src/app ディレクトリにマウントします。 |
「code compose.yaml」の保存
・「code compose.yaml」コマンドを実行し、上の内容を入力して保存します。

ここまでの操作でFlaskコンテナを実行させる準備が整いました。「Dockerfileとcompose.yamlの連携③」で、Flaskコンテナの作成から実行、そしてFlaskアプリケーションに接続していきます。