🌶️

Docker環境のFlaskでデモアプリ作成

2022/02/15に公開約1,600字

pythonの基本文法の勉強が終わったので、pythonのライブラリFlaskを用いてデモアプリを作っていく。

環境構築:

ディレクトリ構成:
Dockerfile
app
|---index.py

Dockerfile:

FROM python:3.9

WORKDIR /app

COPY ./app /app

RUN pip install Flask

CMD ["python", "index.py"]

とりあえず最小限の設定で、Flaskだけインストール。index.pyが実行ファイルなので、コンテナ内でコマンドを実行する。

index.py

from flask import Flask
app = Flask(__name__)
#appには<Flask 'index'>という値が入っていて、これはindex.pyから拡張子を抜いた形で,
#Flaskがどのfileを見ればいいのかが識別できるようにしている

#ここからルーティング設定。/にアクセスすると、index()が実行されるようになっている。
@app.route("/") 
def index():
	return ('<h1>hello. world</h1>') #デフォルトがhtml形式なので自動で変換される

#ポート設定。デバッグモードをONに。
if __name__ == "__main__":
	app.run(host="0.0.0.0", port=80, debug=True)

zsh:

docker build -t flask .

docker run -p 5005:80 -it flask

========================================================================
上ではただの文字列をブラウザに返していたが、次はhtmlファイルをレンダリングする。
ディレクトリ構成はさっきのappにtemplatesというディレクトリを作って、その中にindex.htmlを作成する。

Dockerfile
app
|---index.py
templates
|---index.html

index.py

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/") 
def index():
	return render_template('index.html')
#templatesディレクトリ内の上記のファイル(index.htmlファイル)がレンダリングされる仕組み。

if __name__ == "__main__":
	app.run(host="0.0.0.0", port=80, debug=True)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>ようこそ</h1>
</body>
</html>

Discussion

ログインするとコメントできます