はじめに
今回はDocker
を使ってFlask
のREST API
を作ってみたいと思います。
ファイル構成
FlaskAPITest/ ├ Dockerfile └ app.py
Dockerfileを作成する
Docker Image
を作成するにはDockerfile
を作成する必要があります。
# ベース・イメージ を設定 FROM python:3.5.2-alpine # ファイルをローカルからコンテナ内の指定のパスにコピー COPY . /app # ワークディレクトリを設定 WORKDIR /app # コマンド実行 RUN pip install flask # コンテナが接続用にリッスンするポートを指定 EXPOSE 5000 # ENTRYPOINT とCMD の両方が書いてあると、CMDに書かれている内容がENTRYPOINTに書いてあるcommandのオプションとして実行 ENTRYPOINT [ "python3" ] # イメージに含まれるソフトウェアの実行 CMD [ "app.py" ]
app.pyを作成する
Flask
を用いてREST API
の処理を書きます。
from flask import Flask, request app = Flask(__name__) @app.route('/') def hello_world(): # textで指定されたパラメータをJsonに整形して返す text = request.args.get('text', '') return { 'text' : text } # 外部に公開できるようにポート開放 if __name__ == '__main__': app.run(host="0.0.0.0", port=5000, debug=False)
Dockerの操作
DockerBuildをする
$ docker build -t flaskapitest .
docker build [オプション] パス | URL | -
オプション | 意味 |
---|---|
-t name |
作成するイメージの名前をname にする |
DockerRunをする
$ docker run -p 5000:5000 -it flaskapitest
docker run [オプション] イメージ[:タグ|@ダイジェスト値] [コマンド] [引数...]
オプション | 意味 |
---|---|
-p=[] |
「ホストのポート:コンテナのポート」で公開する |
-it |
コンテナの標準入力を操作する |
テスト
最後にちゃんと動作しているか調べてみましょう。
お好みのWebブラウザを立ち上げ,localhost:5000
にアクセスしてみてください。
次に以下のようなURLクエリパラメータをつけて実行してみてください。
localhost:5000/?text=Hello, World
写真のような出力が得られれば成功です。