LoginSignup
0
0

More than 3 years have passed since last update.

DockerでのFlaskサーバーの作成

Posted at

Elasticsearchへデータを送るFlaskサーバーを作成する必要があったので、docker-composeを使用して構築

ディレクトリ構成

fl/
 ├ Dockerfile
 ├ docker-compose.yml
 └ src/
   ├app.py
   └requirements.txt

最初にDockerfileの記載
pythonのバージョン、プロジェクトディレクトリ、必要なライブラリを記載したファイルの設定

FROM python:3.6
ARG project_dir=/projects/
ADD src/requirements.txt $project_dir
WORKDIR $project_dir
RUN pip install -r requirements.txt

次にdocker-compose.ymlを記載
portの設定とflask runのコマンドを記載
--with-thredsはマルチスレッドで動かすかどうかを設定するオプション

docker-compose.yml
version: '3'

services:
  flask:
    build: .
    ports:
      - "6000:6000"
    volumes:
      - "./src:/projects"
    tty: true
    environment:
      TZ: Asia/Tokyo
    command: flask run --host 0.0.0.0 --port 6000 --with-threads

requirements.txtの記載
pipでインストールするライブラリを記載

requirements.txt
flask
elasticsearch

実際のサーバーを記載

app.py
from flask import Flask, jsonify, request
from elasticsearch import Elasticsearch
from datetime import datetime

app = Flask(__name__)
#Elasticsearchのホストとポートとインデックス名
host = "192.168.xx"
port = "9200"
index_name = "XXXXX"

@app.route('/', methods=['POST']) #URLのパスを記載、またPOSTのみ許可
def insert():
    data = json.loads(request.data) #flaskに投げられたデータを取得
        doc = {
            "location" : data["location"]
        }
    es = Elasticsearch(
        hosts = [{'host': host, 'port' : port}]
    )
    res = es.index(index=index_name, body=doc)

if __name__ == '__main__':
    app.run()

fl/ディレクトリに移動し、

$ docker-compose up -d --build

で起動

修正等で、一度落としたい場合は

$ docker-compose down --rmi all --volumes

でイメージ事削除可能

0
0
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
0
0