Flask

Flask + Docker 環境構築: 初心者向けステップバイステップガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Flask と Docker 環境構築 手順:初心者向けステップバイステップガイド

FlaskアプリケーションをDockerで構築する際、ローカル環境での開発から本番環境への移行まで、手間がかかる部分が多くあります。特にプロジェクトのディレクトリ構成やDockerfileの最適化など、知識がないと詰まるポイントが多いためです。
本記事では2023年最新版に沿った具体的な手順を解説し、誰でも実際のコードを書きながら環境構築を体験できるように設計しました。


プロジェクトディレクトリの作成とファイル構造

FlaskアプリケーションをDockerで構築するには、まずプロジェクト全体の構造を整える必要があります。適切なディレクトリ構成は、後々の保守性や拡張性に大きく影響します。

Flaskアプリケーションのプロジェクト構成では、以下のような基本的なルールが重要です。

  • ファイル名は小文字で統一し、日本語を使用しない
  • Docker関連ファイルをプロジェクトルートに配置する

具体的な手順と推奨されるディレクトリ構成については以下の通りです。

初期設定手順

  1. 任意の場所に新規フォルダを作成し、cd フォルダ名で移動します。
  2. touch app.pyコマンドでFlaskアプリケーションファイルを作成します。
  3. Docker関連ファイル(Dockerfile, docker-compose.yml, .dockerignore)をプロジェクトルートに配置します。

推奨されるディレクトリ構成

ディレクトリ/ファイル 説明
/app.py Flaskアプリのメインコード
/Dockerfile Dockerイメージビルド用設定
/docker-compose.yml 多サービス管理用設定ファイル
/.dockerignore ビルド時の不要ファイルフィルタ

重要: ディレクトリ名やファイル名は日本語を使用せず、小文字で統一することが推奨されます。


Flaskアプリケーションの基本コード (app.py)

Flaskアプリケーションの核となるapp.pyを作成することで、Docker化の対象が明確になります。ここではシンプルな「Hello World」を実装します。

Flaskアプリケーションは、Webサーバーを起動するための最小限のコードで構成されます。以下に基本的な実装例とその仕組みを解説します。

シンプルなHello World実装例

このコードでは、/にアクセスすると「Hello, Docker + Flask!」と表示される基本的なアプリケーションが実装されています。
host="0.0.0.0"の指定は、Dockerコンテナ内で外部からの接続を許可するための必須設定です。

注意: app.run()で起動した場合は、debug=Trueを設定しないようにしてください(本番環境でのセキュリティリスクがあります)。


Dockerfileの作成手順と最適化ポイント

Dockerfileは、FlaskアプリケーションをDockerイメージに変換する際の設定ファイルです。最新のベストプラクティスに沿って構築しましょう。

Dockerfileで重要なのは、サイズの軽量化セキュリティ対策です。これらは特に本番環境での運用において不可欠です。以下に作成手順と最適化ポイントを解説します。

ベースイメージ選定のコツ

  • 公式Pythonイメージを使用するのが基本です。
    dockerfile
    FROM python:3.11-slim

  • slimバージョンは、不要なライブラリを削除しサイズを軽量化します。

マルチステージビルドの活用法

マルチステージビルドにより、開発用の巨大なイメージを本番環境に持ち込まずに済むため、安全性と効率性が向上します。

ヒント: マルチステージビルドは、特にrequirements.txtのインストール時に使用すると効果的です(開発用の大きなイメージを本番環境に残さない)。


docker-compose.ymlファイルの設定例

複数サービスを同時に起動する際にはdocker-compose.ymlを使用します。以下は基本的な構成例です。

サービス定義の基本構文

ポートマッピングと依存関係

設定項目 内容
ports ホストの5000ポートをコンテナの5000ポートに割り当てます。
volumes ローカルファイルとコンテナ内の/appディレクトリを同期します。
environment 開発環境用にFLASK_ENVを設定します。

注意: 本番環境ではFLASK_ENV: productionに変更し、セキュリティを強化してください。


コンテナ起動・テストのコマンド実行

Dockerfileとdocker-compose.ymlが準備できたら、実際にコンテナを起動してアプリケーションをテストします。

docker-composeコマンド一覧

  1. ビルド: docker-compose build
  2. 起動: docker-compose up -d(バックグラウンド実行)
  3. 停止: docker-compose down

ブラウザでの動作確認手順

  • 起動後、ブラウザで http://localhost:5000 にアクセスします。
  • 「Hello, Docker + Flask!」と表示されれば成功です。

トラブルシューティング: 問題が起きた場合はdocker-compose logs webでログを確認してください。


.dockerignoreファイルの重要性と設定方法

.dockerignoreは、Dockerビルド時に不要なファイルやディレクトリを除外するためのファイルです。画像サイズの削減やセキュリティ強化に直結します

無駄なレイヤー削減の仕組み

  • 通常、.git/__pycache__/などの不要なデータがDockerイメージに含まれてしまいます。
  • .dockerignoreでこれらのディレクトリを除外することで、ビルド時間とイメージサイズを大幅に軽減できます。

推奨設定例

このように設定すると、Dockerは指定されたファイルやディレクトリを自動的に除外します。

ヒント: .gitignoreと同様のルールが適用されますが、Docker特有のビルドプロセスに合わせた設定が必要です


まとめ

本記事ではFlaskアプリケーションをDockerで構築する手順について以下を解説しました:

  • プロジェクトディレクトリとファイル構造の作成
  • Flaskアプリケーションの基本コード (app.py)
  • Dockerfileとマルチステージビルドの最適化
  • docker-compose.ymlでの多サービス管理設定
  • コンテナ起動時のコマンドと確認手順
  • .dockerignoreファイルによる効率的なビルド

実際に手を動かしながらDocker環境構築を体験することで、Flaskアプリケーションの開発・デプロイがスムーズになるでしょう。
ぜひ本記事に従って、自分なりのFlask + Dockerプロジェクトを作成してみてください!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Flask