5
10

More than 5 years have passed since last update.

Python:FlaskとPostgreSQLとDockerでウェブアプリを作る

Last updated at Posted at 2018-08-06

始めに

FlaskとPostgreSQLとDockerでウェブアプリを作った時のメモです
Windows環境でDocker+Flask+Dockerについて書いてある記事は意外と少ないので、Windowsユーザの参考になればと思います

この記事を書いた人について

J2EEとRailsは作ったことはあるけれど、pythonはほとんど触ったことはありません

やりたいこと

  • 環境はすべてDocker上の仮想環境に構築する
  • PythonのWebアプリを作る
  • postgresqlに登録できるとこまで作る

その1 Docker上の仮想環境に構築する

Dockerfileの作成

ネット上にいろいろある情報を参考に、Dockerfileを作ってみました

GitHub上のコード

FlaskをDebugモードで上げるためCMD文に
FLASK_APP=app.py FLASK_DEBUG=1 flask run

と記載しています

docker-compose.ymlの作成

GitHub上のコード    

Webモジュールの依存にPostgresqlを依存させています。
Flaskを使うことにしたのは特に深い理由はありません

その2 PythonのWebアプリを作る

app.pyファイルの作成

Web上でよくある例のように「app.py」にDBの接続やルーティング情報、DBの登録ロジックをすべて書くのは嫌だったのでDBの登録ロジックは別ファイルに記載することにしました 。

ただし、Pythonのimort文に関する仕様がよくわかっていなかったため、エラーの解消に時間がかかりました。

Javaの感覚でimport文を全部最初に記載するのではなく、スクリプト言語らしく必要な個所にimport文を記載する、ことがpythonのimport文を理解する上での鍵ですね

その3 postgresqlに登録にデータを登録する

JavaScript:クリップボートのイメージをBase64変換するで作ったHTMLファイルからPOSTしたBase64のデータをPostgresqlに登録させてみました

その4 アプリケーションを実行する

GitHubから適当なフォルダにクローンして、コマンドラインからdocker-compose up -dを実行すればWebアプリケーションが実行されます

雑感

環境構築

RailsのようにWindows固有の問題で頭を悩ますことはなく、J2EEのようにあれこれ設定する必要がなく割と楽に環境構築ができました。dockerに慣れていればほんの数時間で簡単なWebアプリケーションが作成できそうです

アプリケーション開発

  • テーブルのCreateをDDLなしでできるので楽、カラムの変更もサーバ起動時に自動的にやってくれるのでこれも楽です
  • ルートパスを@で指定できるのがJavaと同じなのでとっつきやすかったです
  • App.pyにエラーがあるとサーバ起動がうまくいかない。App.pyから自作のモジュールを呼び出すときはimport文の定義する箇所に注意しなければならない。
  • DBのコネクションを自前で保持しないといけないのが面倒くさいかも
5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10