Flask

FlaskとMySQLのDocker連携ガイド

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

FlaskとMySQLの連携手順を解説|Docker環境構築からコード実装まで

FlaskアプリケーションとMySQLデータベースを接続する際、Dockerでの環境構築は非常に効率的です。本記事では、Docker ComposeでMySQLコンテナを構築し、Flaskアプリケーション内でデータベース操作を行う一連の手順を具体的に解説します。読者の中には「Dockerとの連携が不安」「セキュリティ対策が分からない」という疑問を持つ方もいるでしょう。この記事を読み終えると、MySQLとの連携環境構築からCRUD操作までスムーズに行えるようになります


DockerでMySQLを構築する手順

Docker Composeを使用することで、MySQLコンテナの設定は非常にシンプルになります。以下に具体的な手順を示します。

セキュリティとバージョン管理の注意点

MySQLイメージやライブラリ依存関係の最新性には常に気を配りましょう。mysql:8.0は現在の代表的なバージョンですが、将来的に互換性がなくなる可能性があります。定期的に公式ドキュメントで確認してください。

Docker Composeファイルの作成

MySQLコンテナを起動するには、docker-compose.ymlを作成します。このファイルでは、ポート設定や環境変数を指定できます。以下のコード例を参考にしてください。

この設定では、MySQLのルートパスワードをrootpassとして定義し、Flaskアプリケーションが使用するデータベース名やユーザー情報も指定しています。ポート3306をホスト側とコンテナ内で同じにすることで、外部から接続が可能になります。

MySQLコンテナの起動確認

Docker Composeファイルを作成したら、以下のコマンドでコンテナを起動します。

起動後の確認手順

  • MySQLサーバーの接続テスト: mysql-clientを使用して接続を確認しましょう。

このコマンドでデータベース一覧が表示されれば、MySQLコンテナの構築は完了です。

  • エラーメッセージ対応: Access deniedなどが出た場合は、パスワードやユーザー名を確認してください。

FlaskアプリケーションでのMySQL接続準備

Flaskアプリケーションでは、pymysqlflask-mysqldbを使用してMySQLに接続します。以下に必要な手順を紹介します。

必要ライブラリのインストールと比較表

選択肢

  • flask-mysqldb: データベース設定を簡潔に管理できます。
  • pymysql: 低レイヤーなSQL操作が必要な場合に利用。
ライブラリ名 特徴 導入コマンド
flask-mysqldb Flaskと連携しやすい pip install flask-mysqldb
pymysql SQL操作が自由度が高い pip install pymysql

DB接続設定コードの実装

MySQLと接続するためには、以下のようなコードをFlaskアプリケーションに記述します。

このコードでは、app.configにMySQLの接続情報を設定し、MySQL(app)で初期化しています。これにより、Flaskアプリケーション内から簡単にデータベース操作が可能になります。

注意事項:

  • 実際に運用する際は、セキュリティ対策として.envファイルで環境変数を使用してください(後述)。
  • パスワードなど機密情報はコード内でハードコーディングしないようにしましょう。

FlaskとMySQLの連携コード構築

MySQLとの連携を確立したら、モデルクラスやルーティングを実装することで具体的な操作を行うことができます。

ORMによるデータベース操作の導入

Flask-Mysqldbでは直接SQLクエリを発行することも可能ですが、ORMを使用するとデータベース操作がシンプルになります。以下にflask-sqlalchemyを使った簡単なモデル例を示します。

このコードでは、Userモデルを定義し、データベースに保存される項目(id、name、email)を設定しています。また、__repr__メソッドでオブジェクトの文字列表現を指定します。

導入時の手順

  1. pip install flask-sqlalchemyでインストール。
  2. データベースURIを正しく設定する。
  3. モデルクラスを定義し、CRUD操作に使用する。

CRUD操作の実装サンプル

Flaskアプリケーション内でCRUD(作成・読み取り・更新・削除)機能を実装するには、以下のエンドポイントを作成します。

Create機能の実装

新しいユーザーをデータベースに追加するPOST /usersエンドポイントです。以下のようにリクエストボディからデータを受け取って保存できます。

このコードでは、request.get_json()で送信されたデータを取得し、Userモデルのインスタンスを作成して保存します。

実装時のポイント:

  • バリデーション(例: 電子メール形式チェック)が必要な場合は、追加ロジックを挿入。
  • エラーハンドリングも忘れずに実装してください。

セキュリティ対策と環境変数の活用

アプリケーション内でDB接続情報(ユーザー名やパスワード)を硬编码するとセキュリティリスクがあります。それを避けるために、.envファイルを使用して情報を管理します。

.envファイルの作成と設定例

プロジェクトルートに.envを作成し、以下のように環境変数を定義します。

このようにしてDB接続情報は外部から読み込むことで、セキュリティ対策が強化されます。

セキュアな接続設定の実装手順

.envファイルを読み込むには、python-dotenvライブラリを使用します。以下のようにインストール・初期化してください。

このようにすることで、DB接続情報はコード内に含まれず、外部ファイルで管理できるようになります。

導入のメリット:

  • デプロイ時に秘密情報を漏らさない。
  • 環境ごとの設定(開発・本番)を柔軟に切り替え可能。

動作確認と今後の拡張案

構築したアプリケーションが正しく動作するかを確認し、今後の拡張性についても検討しましょう。

起動テストの手順とトラブルシューティング

Dockerコンテナを起動し、Flaskアプリケーションを実行してアクセスします。以下のコマンドで起動できます。

ブラウザでの確認

  • http://localhost:5000/usersにアクセスすると、ユーザーの一覧が表示されるはずです。
  • エラー処理: パスワードや接続情報のミスなどがあれば、コンテナログ(docker-compose logs)を確認してください。

今後の拡張可能性と改善点

提案事項

  1. 認証機能(JWTやOAuth)の追加。
  2. データベース操作にトランザクションを導入。
  3. ロギングの整備: アプリケーションの動作状況を可視化する。
  4. Docker Composeの拡張: RedisやNginxなどのコンテナを追加。

改善例

  • flask-sqlalchemyではなく、より柔軟なORM(例: SQLAlchemy Core)を使用。
  • Dockerイメージのバージョン管理にlatestタグではなく、固定バージョンで指定する(例: mysql:8.0.32)。

まとめ

本記事では、FlaskアプリケーションとMySQLデータベースをDocker環境で連携する一連の手順について解説しました。具体的には以下をカバーしています:

  • Docker ComposeでのMySQLコンテナ構築
  • pymysqlやflask-mysqldbのインストールと設定
  • Flaskアプリケーション内でのDB接続コード実装
  • CRUD機能のエンドポイント設計
  • セキュリティ対策として環境変数の活用

これらを参考に、自らDockerでFlaskとMySQLの連携環境を作成し、データベース操作を試してみてください。実践することで理解が深まり、開発効率も向上します。


スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Flask