flaskとは
Flaskは、pythonを使ってWebサイトを作る仕組みで、Djangoのような自動作成の部分はありませんが、軽量で使いやすいフレームワークです
くわしくはFlaskの基礎を読んでください
今回は、flaskの基礎でやったことをDockerでもやってみようというものです
Flaskの基礎をDockerで
- Flaskで文字列出力
- app.pyで文字列を出力する
- FlaskでHTMLを呼び出す
- app.pyから指定フォルダーのindex.htmlを出力する
- Flaskからデータをindex.htmlに送る
- Jinja2を使ってpythonからindex.htmlにデータを送る
Flaskで文字列出力
Helloというフォルダーに環境を作ります
作るのはいつものcompose.yamlとDockerfileとapp.pyです
webというサービス名でport5000を使います。カレントフォルダーにapp.pyを作ります
1回目のupの時にimageを落としますので、少し時間がかかりますが、imageができてしまえば後は早いです
@app.routeでlocalhost:5000/ のトップがリクエストされたらhello_flask()関数が動き、returnで文字を返します。それをHTMLとして出力します
実行するときは Helloフォルダーにコマンドプロンプトで移動して
これで動きましたので「localhost:5000」をブラウザで開けばよいです
FlaskでHTMLを呼び出す
次にpythonからindex.htmlを呼び出して出力するサンプルです
compose.yamlやDockerfileは同じです。違うのはtemplatesというフォルダーを作成して配下にindex.htmlを入れるところとapp.pyでのreturnの仕方です
returnのところで render_template関数を使ってindex.htmlの中身を読み込んでいます
単純にindex.htmlファイルを読み込んで出すだけです
起動は同じupコマンドですが、先のコンテナが稼働中だとportがぶつかるのでdownしてから実行してください
FlaskからデータをHTMLに送る
次にpythonからindex.htmlを呼び出してデータを渡すサンプルです
compose.yamlやDockerfileは同じです。index.htmlの中のjinjaという記法とapp.pyでのreturnの仕方です
returnのところで render_template関数を使ってindex.htmlの中身を読み込んで、名前付きのデータを送り込んでいます
htmlファイル中の{{}}の中に変数名が入ります。そこにわたったデータが出力されます
いままでと同様に前のものをdownしてupすれば動きます