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

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

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

みなさんこんにちは!😄
今回は、Dockerfileとcompose.yamlを組み合わせてFlaskアプリを動かす環境を構築していきます。

 Dockerを使って開発していると、WordPressやPHPみたいに「Docker Hubに公式イメージがあるもの」は、compose.yamlだけでサクッと動かせちゃいますよね。

でも、PythonでFlaskを使いたい場合はちょっと違います。
Pythonの公式イメージにはFlaskが入っていないので、
自分でFlask入りのイメージを作る必要があるんです。

そのときに登場するのが、Dockerfile です。
compose.yamlとDockerfileを連携させることで、柔軟に環境をカスタマイズできるようになります!

 「Dockerfileとcompose.yamlを連携してFlask環境を構築する」では、「Dockerfile」と「compose.yaml」ファイルを連携させて、コンテナを構築していきます。

次の3部に分けて解説していきます。

まずは理解しよう!Dockerfileとは?

Dockerfileは、「Dockerイメージをどうやって作るか」を書く設計図のようなファイルです。
イメージのベース、追加パッケージ、コピーするファイル、起動コマンドなどを定義します。

つまり、「自分専用のイメージを作るレシピ」みたいなもの。
Dockerfileを使うと、環境の再現性が高まり、開発〜本番まで統一した環境を保つことができます。

Dockerfileの基本構成と命令一覧

命令役割説明例
FROMベースイメージ指定例:FROM python:3.9
RUNコマンド実行(パッケージのインストールなど)RUN apt-get update && apt-get install -y git
COPY / ADDファイルやコードのコピーCOPY . /app
WORKDIR作業ディレクトリ指定WORKDIR /app
EXPOSE公開ポートの指定EXPOSE 8080
CMDコンテナ起動時に実行されるコマンドCMD ["python", "app.py"]

これらを組み合わせることで、
「どんな環境を作り、どう動かすのか」を1つのファイルで再現できます。

Flaskとは?

Flaskは、Pythonで動く軽量Webフレームワークです。
有名なDjangoよりもシンプルで、ちょっとしたAPIや小規模Webアプリを作るのにピッタリ。

Flaskは「必要なものだけを後から足す」設計なので、
開発者の自由度が高いのが特徴です。

公式サイトはこちら👇
👉 https://flask.palletsprojects.com/en/3.0.x/

作業前のクリーンアップ

Docker環境がごちゃついていると、古いコンテナやイメージが原因でうまく動かないことがあります。
なので、まずは一度整理しておきましょう!

docker system prune -a --volumes
オプション説明
-aすべての未使用イメージを削除
--volumes使われていないボリュームも削除

 もしボリュームなどのDockerオブジェクトが残っていれば、Docker Desktopを使ってGUIで削除しておきましょう。
コマンド操作が苦手な方には、Docker Desktopの方が視覚的で分かりやすいです。

💡 Docker Desktopを使えば、GUIで削除できるのでコマンドに慣れていない人も安心!

作業用ディレクトリを作ろう

次に、Flask環境を構築するフォルダを作成します。

cd desktop/docker
mkdir flask1
cd flask1

実行結果

PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir flask1

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

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2025/10/12     1:00                flask1

PS C:\Users\joeac\Desktop\docker> cd flask1
PS C:\Users\joeac\Desktop\docker\flask1>

VSCodeでDockerfileを作成

作業ディレクトリに移動したら、VSCodeを起動してDockerfileを作成します。

code Dockerfile

VSCodeが起動します。

VSCodeが開いたら、以下の内容を貼り付けて保存します👇

FROM python:3.12
WORKDIR /usr/src/app
RUN pip install flask==3.0.2
CMD ["flask", "run", "--host=0.0.0.0"]

各命令の解説

命令説明
FROMPython 3.12イメージをベースに利用します。
WORKDIRコンテナ内での作業ディレクトリを /usr/src/app に設定。
RUNFlask(バージョン3.0.2)をインストール。
CMDコンテナ起動時にFlaskを実行。--host=0.0.0.0 で外部アクセスを許可。

このCMD行は、
CMD flask run --host=0.0.0.0 と書くこともできますが、
推奨は [ ] で囲み「,」で区切るJSON形式です。
この書き方だと、シェルの影響を受けず安全に実行できます。

ここまでの流れをまとめると…

ステップ内容
作業フォルダを作成(flask1)
VSCodeでDockerfileを作成
PythonベースのFlask実行環境を定義
Flaskをインストールして起動設定を追加

これで、Flaskを動かすためのカスタムDockerイメージを作る準備が整いました!

イメージで理解する:Dockerfileの役割

まとめ

  • Dockerfileは自分だけのDockerイメージを作るレシピ!
  • Flaskのように公式イメージに含まれないパッケージは、Dockerfileでカスタマイズ。
  • RUN pip install flask でFlaskを導入。
  • CMD ["flask", "run", "--host=0.0.0.0"] で起動設定。

次回:「Dockerfileとcompose.yamlを連携してFlask環境を構築する②」では、
Flaskアプリのファイルを作って、compose.yamlを定義するところまでを解説します。