Ich musste einen Flask-Server erstellen, um Daten an Elasticsearch zu senden, also habe ich ihn mit Docker-Compose erstellt
Verzeichnisaufbau
fl/ ├ Dockerfile ├ docker-compose.yml └ src/ ├app.py └requirements.txt
Erstbeschreibung von Dockerfile Einrichten einer Datei, die die Python-Version, das Projektverzeichnis und die erforderlichen Bibliotheken beschreibt
FROM python:3.6
ARG project_dir=/projects/
ADD src/requirements.txt $project_dir
WORKDIR $project_dir
RUN pip install -r requirements.txt
Als nächstes schreiben Sie docker-compose.yml Beschreibt die Porteinstellung und den Befehl zum Ausführen des Kolbens --with-threds ist eine Option, um festzulegen, ob in mehreren Threads ausgeführt werden soll
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
Beschreibung der Anforderungen.txt Beschreiben Sie die Bibliothek, die mit pip installiert werden soll
requirements.txt
flask
elasticsearch
Beschreiben Sie den tatsächlichen Server
app.py
from flask import Flask, jsonify, request
from elasticsearch import Elasticsearch
from datetime import datetime
app = Flask(__name__)
#Host-, Port- und Indexname von Elasticsearch
host = "192.168.xx"
port = "9200"
index_name = "XXXXX"
@app.route('/', methods=['POST']) #Geben Sie den URL-Pfad ein und lassen Sie nur POST zu
def insert():
data = json.loads(request.data) #Holen Sie sich die Daten in den Kolben geworfen
doc = {
"location" : data["location"]
}
es = Elasticsearch(
hosts = [{'host': host, 'port' : port}]
)
res = es.index(index=index_name, body=doc)
if __name__ == '__main__':
app.run()
Gehen Sie in das Verzeichnis fl / und
$ docker-compose up -d --build
Beginnen mit
Wenn Sie es einmal zur Korrektur fallen lassen möchten usw.
$ docker-compose down --rmi all --volumes
Bild kann mit gelöscht werden
Recommended Posts