カテゴリ: Flask 更新日: 2025/12/31

FlaskアプリをDockerでコンテナ化する方法!初心者でもわかる完全ステップガイド

FlaskアプリをDockerでコンテナ化する方法!初心者向けステップガイド
FlaskアプリをDockerでコンテナ化する方法!初心者向けステップガイド

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

生徒

「Flaskで作ったアプリを、Dockerというものを使って公開できるって聞いたんですが、本当ですか?」

先生

「はい、できますよ。Docker(ドッカー)は、アプリを箱に入れるようにして、どこでも同じ環境で動かせる便利なツールです。」

生徒

「でも難しそうです…。パソコンもあまり触ったことないんです。」

先生

「大丈夫です。一つひとつ、ゆっくり丁寧に説明していきますね。」

1. Docker(ドッカー)ってなに?わかりやすく解説

1. Docker(ドッカー)ってなに?わかりやすく解説
1. Docker(ドッカー)ってなに?わかりやすく解説

Docker(ドッカー)は、アプリやプログラムを箱(コンテナ)に詰めて持ち運ぶ仕組みです。

たとえば、家で作った料理をお弁当箱に入れて、どこでも同じ味で食べられるようにするイメージです。

このお弁当箱が「Dockerコンテナ」です。Flaskアプリをこの箱に入れると、他の人もそのまま同じ状態で動かせます。

2. Flask(フラスク)とは?超入門

2. Flask(フラスク)とは?超入門
2. Flask(フラスク)とは?超入門

Flask(フラスク)は、Pythonという言語で作る軽いウェブアプリの仕組みです。

例えば、問い合わせフォームや簡単なブログを作るときに使います。

Flaskは「必要なものだけ」を用意して、自分の好きな形で作れるのが特徴です。

3. DockerでFlaskを動かすと、なにが良いの?

3. DockerでFlaskを動かすと、なにが良いの?
3. DockerでFlaskを動かすと、なにが良いの?
  • 他の人のパソコンやサーバーでも同じように動く
  • 「動かないエラー」が少なくなる
  • 一度作れば何度でも同じように使える

つまり、アプリの配布や運用が、とてもラクになるのです。

4. まずはFlaskアプリを作ってみよう

4. まずはFlaskアプリを作ってみよう
4. まずはFlaskアプリを作ってみよう

以下はとても簡単なFlaskアプリの例です。


from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "こんにちは!これはDockerで動くFlaskアプリです。"

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

このコードは「Flaskを使って、ウェブページに文字を表示する」だけのシンプルなものです。

5. Dockerfile(ドッカーファイル)とは?

5. Dockerfile(ドッカーファイル)とは?
5. Dockerfile(ドッカーファイル)とは?

Dockerfileとは、「どんなお弁当を作るか」を書いたレシピのようなものです。

このレシピを元に、DockerがFlaskアプリを箱に詰めてくれます。

下のように書きます。


FROM python:3.10-slim
WORKDIR /app
COPY . /app
RUN pip install flask
EXPOSE 5000
CMD ["python", "app.py"]

ポイントの説明:

  • FROM:Pythonを使うよ、という宣言
  • WORKDIR:作業フォルダを「/app」にする
  • COPY:今のファイルをコンテナにコピー
  • RUN:Flaskをインストール
  • EXPOSE:使うポート(入口)を指定
  • CMD:アプリのスタート方法

6. Dockerでコンテナを作る手順

6. Dockerでコンテナを作る手順
6. Dockerでコンテナを作る手順

以下のようにコマンドを順番に入力していきます。

これは「お弁当箱を作って、フタを開けて中を見る」という流れです。


# Dockerfileのある場所に移動して
docker build -t flask-docker-app .

# コンテナを起動する
docker run -p 5000:5000 flask-docker-app

-tは「名前をつける」という意味です。-pは「ポート番号の橋渡し」です。

7. ブラウザで確認してみよう

7. ブラウザで確認してみよう
7. ブラウザで確認してみよう

Dockerを動かしたあと、パソコンのブラウザを開いて、次のURLにアクセスします。


http://localhost:5000

「こんにちは!これはDockerで動くFlaskアプリです。」と表示されれば成功です。

8. エラーが出たときのチェックポイント

8. エラーが出たときのチェックポイント
8. エラーが出たときのチェックポイント
  • Dockerがインストールされていない: → 公式サイトからインストールして再起動
  • ポート5000が使えない: → 他のアプリが使っているかもしれません。docker run -p 8000:5000などで変更してみましょう
  • Flaskのスペルミス:flaskは小文字です。大文字にしないよう注意

9. Flaskアプリを更新したらどうする?

9. Flaskアプリを更新したらどうする?
9. Flaskアプリを更新したらどうする?

アプリを修正したら、もう一度Dockerイメージを作り直します。


docker build -t flask-docker-app .
docker run -p 5000:5000 flask-docker-app

こうすることで、新しい内容に反映されます。

10. requirements.txtを使う方法も知っておこう

10. requirements.txtを使う方法も知っておこう
10. requirements.txtを使う方法も知っておこう

Flask以外にもたくさんのライブラリを使うときは、requirements.txtという一覧ファイルを使います。


flask

Dockerfileを以下のように変更します。


FROM python:3.10-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]

これで、まとめて必要なライブラリが自動でインストールされます。

まとめ

まとめ
まとめ

FlaskアプリをDockerでコンテナ化するまでの流れを振り返ると、Pythonで作った軽量なウェブアプリをどこでも同じ環境で動かすために、Dockerという仕組みが非常に役立つことがわかります。とくに初心者が悩みやすい「環境の違いによる動作のズレ」を防ぎ、安定してアプリを動かせる点が大きな魅力です。この記事を通して、Dockerという仕組みが何をしてくれるのか、そしてFlaskアプリをどのようにコンテナに詰めて動かすのかを具体的に理解できたはずです。まずはFlaskアプリを作り、その後Dockerfileを用意するという流れは、ウェブ開発の基本的な手順を身につけるうえでも大切な経験になります。

Dockerでコンテナを作る仕組みは、あたかも手作りした料理をお弁当箱に詰め込んで、どこへでも持ち運べるようにしたような感覚に近いものです。PythonやFlaskのインストール環境が人それぞれ違っても、Dockerコンテナにまとめてしまえば、いつでも同じ状態で実行できます。また、Dockerfileはレシピのような役割を持ち、どのPythonバージョンを使うか、どのライブラリをインストールするか、どのポートを開くかなどを明確に記述することで、誰が使っても同じ環境が再現されます。手順そのものはシンプルでありながら、実際の開発では非常に重要な概念が詰まっています。

コンテナを実行するときのdocker builddocker runのコマンドは、開発の現場でも頻繁に使われる基本操作です。アプリを修正したら新しくイメージを作り直し、再度コンテナを起動するというサイクルは、学習を続けるうちに自然と身についていくでしょう。また、requirements.txtを使って複数のライブラリをまとめて管理する方法も、Flaskアプリを本格的に運用するうえで欠かせない知識です。ライブラリの管理を適切に行うことで、コンテナの再現性が高まり、別のパソコンやサーバーで動作確認するときも安心できます。

さらに、エラーが出たときのチェックポイントも非常に重要です。ポートの競合やDockerのインストール状態、スペルミスといった初歩的なつまずきは、初心者が必ずどこかで経験するポイントです。今回の解説で紹介したような手順を思い出しながら、一つずつ丁寧に確認していくことで、エラーに強い開発スタイルが自然と身に付いていきます。特にFlaskアプリではポート番号の指定が重要で、Dockerコンテナ内と外の接続を正しくマッピングすることで、ブラウザからアプリにアクセスできるようになります。

ここでは、記事内で扱ったFlaskアプリの代表的な構成とDockerfileをもう一度掲載し、全体の関連性を整理しておきます。各ファイルの役割や記述の意味を再確認することで、DockerとFlaskのつながりがより深く理解できるでしょう。

Flaskアプリの基本構成サンプル


from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "こんにちは!これはDockerで動くFlaskアプリです。"

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

Dockerfileの基本構成サンプル


FROM python:3.10-slim
WORKDIR /app
COPY . /app
RUN pip install flask
EXPOSE 5000
CMD ["python", "app.py"]

これらのファイルがどのようにつながっているのかを意識しながら実際にコンテナを作成してみると、DockerがどのタイミングでFlaskアプリを読み込み、どのように環境を整えてくれるのかが一段と理解しやすくなります。今回紹介した手順を実際に動かしてみることで、コンテナ化という技術の意味がはっきり見えてきますし、今後クラウドサービスにデプロイする際の基礎力としても大きく役立つでしょう。FlaskとDockerという二つのテーマは、今のウェブ開発においてとても相性が良く、学んでおくことで開発の幅が大きく広がります。

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

生徒

「DockerでFlaskアプリを動かす仕組みがだいぶイメージできるようになりました。コンテナという考え方がわかりやすかったです。」

先生

「一度仕組みを理解すると、Dockerはとても強力な道具になりますよ。環境の違いで悩まされることが減るので、開発が楽になります。」

生徒

「Dockerfileの意味もわかりました。レシピのように必要な手順が書いてあるんですね。」

先生

「その通り。Flaskアプリをどう動かすかをDockerに教えるためのものです。慣れてくると、もっと複雑なアプリの設定もできるようになりますよ。」

生徒

「実際に自分のアプリでも試してみたいです!環境が変わっても同じように動かせるのはすごく便利ですね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

FlaskアプリをDockerでコンテナ化するとはどういう意味ですか?

FlaskアプリをDockerでコンテナ化するとは、アプリの動作環境を丸ごとパッケージにして、どこでも同じように動かせるようにすることです。
カテゴリの一覧へ
新着記事
New1
Django
Djangoのプロジェクトとアプリの違いを徹底解説!初心者でも迷わない構造の考え方
New2
Flask
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.3
Java&Spring記事人気No3
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
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のmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説