カテゴリ: Flask 更新日: 2025/11/24

FlaskアプリをDocker Composeで管理する方法!複数サービス対応の完全ステップガイド

FlaskアプリをDocker Composeで管理する方法!複数サービス対応の基本
FlaskアプリをDocker Composeで管理する方法!複数サービス対応の基本

先生と生徒の会話形式で理解しよう

生徒

「Flaskだけじゃなくて、データベースとかも一緒に動かしたいです。どうしたらいいですか?」

先生

「Docker Compose(ドッカー・コンポーズ)を使うと、Flaskアプリとデータベースなど複数のサービスをまとめて一つのシステムとして管理できますよ。」

生徒

「Docker Composeって難しそうですが、初心者でもできますか?」

先生

「できます。今回は、FlaskアプリとPostgreSQLを例に、Docker Composeを初心者向けにわかりやすく丁寧に解説しますね。」

1. Docker Composeとは?初心者向けにかんたん解説

1. Docker Composeとは?初心者向けにかんたん解説
1. Docker Composeとは?初心者向けにかんたん解説

Docker Composeは、複数のDockerコンテナ(箱)を一つの設定ファイル(docker-compose.yml)でまとめて管理できるツールです。Flaskアプリやデータベースなど「別々に動かす箱」を一緒に起動したり止めたりできます。

たとえば、学校で机と椅子をセットで使うように、必要な部品を揃えて一括で使いたいイメージです。

2. Docker Composeを使うメリットは?

2. Docker Composeを使うメリットは?
2. Docker Composeを使うメリットは?

初心者におすすめの理由:

  • コマンド一つで複数サービスをまとめて起動できる
  • 設定がテキスト(ymlファイル)なので何を使っているか一目でわかる
  • 他の人と同じ環境を簡単に再現できる(環境構築の失敗が減る)

3. FlaskアプリとPostgreSQLのDocker Compose構成例

3. FlaskアプリとPostgreSQLのDocker Compose構成例
3. FlaskアプリとPostgreSQLのDocker Compose構成例

まず、これから使うファイル構成を見てみましょう:


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

FlaskはPythonで作るウェブアプリ、PostgreSQLはデータベースです。docker-compose.ymlで両方を一緒に起動します。

4. Flaskアプリのサンプルコード

4. Flaskアプリのサンプルコード
4. Flaskアプリのサンプルコード

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "こんにちは!Docker ComposeでFlaskとDBを一緒に動かしています。"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

このコードは、「こんにちは!」を表示する簡単なWebサイトです。

5. docker-compose.ymlの書き方

5. docker-compose.ymlの書き方
5. docker-compose.ymlの書き方

version: "3"
services:
  web:
    build: ./app
    ports:
      - "5000:5000"
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: flaskdb

ポイント解説:

  • services::ここにサービス(webやdb)を列挙します。
  • build::Flaskアプリを指定フォルダから作ります。
  • ports::コンテナの中のポート(5000)をパソコンの同じ番号に繋ぎます。
  • image::あらかじめ用意されたPostgreSQLの箱を使います。
  • environment::DBに使う名前やパスワードなどを設定します。

6. Docker Composeでサービスを起動しよう

6. Docker Composeでサービスを起動しよう
6. Docker Composeでサービスを起動しよう

docker-compose up -d

-dは「デタッチドモード」の略で、バックグラウンドで起動します。

7. 動いているか確認してみよう

7. 動いているか確認してみよう
7. 動いているか確認してみよう

次のコマンドで動いているかチェックします:


docker-compose ps

ブラウザで http://localhost:5000 を開くと、Flaskの画面が表示されます。

8. サービスを止める方法

8. サービスを止める方法
8. サービスを止める方法

docker-compose down

これで起動した箱すべてがまとめて止まります。

9. よくある失敗と確認ポイント

9. よくある失敗と確認ポイント
9. よくある失敗と確認ポイント
  • DockerやCompose未インストール:公式サイトから導入し、再起動を。
  • ポート衝突:5000ポートが使えない場合、別の番号(例:8000:5000)を使いましょう。
  • スペルミス:“docker-compose.yml”の名前やインデント(字下げ)は正確に。
  • 環境変数がない:POSTGRESの設定が正しいか確認してください。

10. Flaskアプリを変更したら?

10. Flaskアプリを変更したら?
10. Flaskアプリを変更したら?

コードを修正したら、再度ビルドと起動をします:


docker-compose down
docker-compose up -d --build

これで新しいコードが反映されます。

11. Docker Composeの学び方まとめ

11. Docker Composeの学び方まとめ
11. Docker Composeの学び方まとめ
  • 複数サービスをまとめて管理できる
  • 環境構築の失敗を減らせる
  • チーム開発でも同じ環境を共有しやすい

初心者でも、Flaskとデータベースなど複数の部品を一つにまとめて動かせるのがDocker Composeの魅力です。

まとめ

まとめ
まとめ

FlaskアプリケーションをDocker Composeで管理する方法を通して、複数のサービスを効率よく扱うための基本的な仕組みと手順を理解することができました。特に、FlaskとPostgreSQLのように役割の異なるサービスを、ひとつの構成ファイルでまとめて動かす利便性は、開発環境の統一やトラブルシューティングの効率化に大きく貢献します。さらに、docker-compose.ymlの設定によって、サービスごとの依存関係や環境変数をまとめて管理できるため、開発チーム全体で同じ動作環境を再現しやすい点も大きな魅力です。複数サービスを扱う際は、ポート設定やスペルミス、環境変数の書き忘れなど細かい点がトラブルにつながりやすいため、設定ファイルの見直しやログの確認を習慣にするとより安定した開発が行えるでしょう。 また、Flaskアプリ側の変更があった場合には、再ビルドを行うことで常に最新の状態を保つことができます。Docker Composeの基本的なコマンドである updownps を覚えておけば、開発環境の起動や停止、状態確認もスムーズに進めることができます。環境の再現性と管理の効率化という観点でも、Docker Composeは学習しておいて損のない重要な技術です。Flaskアプリを用いた簡単なAPI構築からデータベース連携、さらにはログ解析ツールやキャッシュサービスとの連携まで、今後の開発に幅広く応用できる知識となるでしょう。 下記では、記事内で扱った設定と同じ形式のサンプルコードを改めて掲載します。実際に自分の環境で動かしながら、もう一度流れを確認してみてください。

Docker Compose構成のサンプル(再掲・応用版)


version: "3"
services:
  web:
    build: ./app
    ports:
      - "5000:5000"
    environment:
      FLASK_ENV: development
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: flaskdb
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

Flaskアプリの確認用サンプル


from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "ようこそ!Docker Compose環境で動くFlaskサンプルです。"

@app.route("/health")
def health():
    return {"status": "ok", "message": "サービスが正常に動いています。"}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

このような構成を活用することで、ウェブアプリケーションとデータベースを同時に管理しながら、安定した開発環境を簡単に整えることができます。特に学習段階では、設定の変更と挙動の違いを比較しながら取り組むと理解が深まりやすくなります。Docker Composeを身につけることで、今後のプロジェクトでも役立つ幅広い基盤技術の理解につながるはずです。

先生と生徒の振り返り会話

生徒

「今日の内容で、Flaskとデータベースを一緒に動かす仕組みがようやく理解できました。docker-compose.ymlって最初は複雑に見えましたが、実際はサービスをまとめて書くだけなんですね。」

先生

「そうですね。Composeは慣れるととても便利ですし、環境を崩すことなく何度でも同じ構成を再現できます。開発チームで共有する場合にも強い味方になりますよ。」

生徒

「Flaskのコードを書き換えたら再ビルドしないと反映されないのも体験して覚えました。ログの確認やポートの設定もちゃんと理解しておかないといけないですね。」

先生

「ええ。特に複数サービスを扱うときは、小さな設定の違いが思わぬトラブルにつながることがあります。今日学んだ流れを復習しながら、自分で小さなサービスを追加して動作確認するのもおすすめですよ。」

生徒

「はい!次はRedisやNginxも追加して複数サービスの構成を試してみたいです。」

先生

「とても良いですね。Composeの理解が深まるほど大規模な構成にも対応できるようになります。焦らず一つずつ進めていきましょう。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説