Я пытаюсь сделать так, чтобы сервер, на котором размещено (закрепленное) приложение Flask, «регистрировало» запросы, которые ему отправлялись, просто записывая их в текстовый файл.
Мой docker-compose.yml
выглядит как
version: '2'
services:
writer:
build: writer/
ports:
- 5000:5000
container_name: writer
и внутри каталога writer
у меня есть файл writer.py
, как показано ниже, который должен получить запрос и записать его в локальный файл feedback.txt
:
from flask import Flask, request, jsonify
app = Flask(__name__, static_url_path='')
@app.route('/feedback', methods=['POST'])
def log_feedback():
with open("feedback.txt","a") as fo:
fo.write(request.data.decode("utf-8"))
print(request.data.decode("utf-8"))
fo.write('\n')
return 'Got it!'
if __name__ == '__main__':
app.run(host='0.0.0.0', debug = False)
Для справки, мой Dockerfile
в том же writer
dir:
FROM python:3.6-slim
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
ENTRYPOINT [ "python", "writer.py" ]
requirements.txt
это просто
flask
И запрос образца
curl -H "Content-Type:application" -X POST -d '{"Content":"Hello world"}' http://0.0.0.0:5000/feedback
К сожалению, feedback.txt
не пишется локально (например, вне контейнера). Можете ли вы намекнуть мне изменения, которые я должен выполнить, например, в docker-compose.yml
(например, с томами?), чтобы получить feedback.txt
, написанный и доступный на сервере?