docker-composeでflaskを手軽に試す為の小さなテンプレート

概要

小規模なAPIを作りたいと思い、調べてみるとpythonのflaskがシンプルで良さそうでした。
もちろんサーバーも小規模で良いのですがやはりdockerを使って既存サーバーに同居させる方針が良いと思い書きました。
単体で済むのでdocker-composeにする必要は無いレベルですが、起動時のオプションを気にする必要が無かったり拡張性も考慮してcompose化しております。

参考

flaskのサンプルコードを参考にさせて頂きました

qiita.com

docker-compose一式

必要なプログラムもdocker-compose.ymlも下記githubに置いてあります。
使い方もREADME.mdを合わせてごらんください。

github.com

個別ファイル

最新はgithubですが、個別に見たい場合は下記をどうぞ。

Dockerfile

FROM python:3.7-alpine3.7

ARG project_dir=/app/

WORKDIR $project_dir

RUN pip install flask

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

main.py

from flask import Flask, jsonify, request
import json
app = Flask(__name__)

@app.route("/", methods=['GET'])
def hello():
    return "route get. Hello!"

@app.route('/reply', methods=['POST'])
def reply():
    data = json.loads(request.data)
    answer = "route post. keyword is %s!\n" % data["keyword"]
    result = {
      "Content-Type": "application/json",
      "Answer":{"Text": answer}
    }
    # return answer
    return jsonify(result)

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

docker-compose.yml

version: '3.3'

services:
  webapi:
    build: ./flask
    ports:
      - "5001:5001"
    volumes:
      - ./app:/app
    restart: always