J'avais besoin de créer un serveur Flask pour envoyer des données à Elasticsearch, donc je l'ai construit en utilisant docker-compose
Structure du répertoire
fl/ ├ Dockerfile ├ docker-compose.yml └ src/ ├app.py └requirements.txt
Première description de Dockerfile Configuration d'un fichier décrivant la version de python, le répertoire du projet et les bibliothèques requises
FROM python:3.6
ARG project_dir=/projects/
ADD src/requirements.txt $project_dir
WORKDIR $project_dir
RUN pip install -r requirements.txt
Ensuite, écrivez docker-compose.yml Décrit le paramètre de port et la commande d'exécution du flask --with-threds est une option pour définir s'il faut s'exécuter dans plusieurs threads
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
Description de requirements.txt Décrivez la bibliothèque à installer avec pip
requirements.txt
flask
elasticsearch
Décrivez le serveur réel
app.py
from flask import Flask, jsonify, request
from elasticsearch import Elasticsearch
from datetime import datetime
app = Flask(__name__)
#Nom d'hôte, de port et d'index Elasticsearch
host = "192.168.xx"
port = "9200"
index_name = "XXXXX"
@app.route('/', methods=['POST']) #Entrez le chemin de l'URL et autorisez uniquement POST
def insert():
data = json.loads(request.data) #Obtenez les données jetées dans le ballon
doc = {
"location" : data["location"]
}
es = Elasticsearch(
hosts = [{'host': host, 'port' : port}]
)
res = es.index(index=index_name, body=doc)
if __name__ == '__main__':
app.run()
Allez dans le répertoire fl / et
$ docker-compose up -d --build
Commencer avec
Si vous souhaitez le supprimer une fois pour une correction, etc.
$ docker-compose down --rmi all --volumes
L'image peut être supprimée avec
Recommended Posts