簡體   English   中英

如何使Docker化的Flask應用程序將輸出寫入文件?

[英]How can I make a dockerized Flask app write output to file?

我試圖通過簡單地將它們寫入文本文件的方式,使托管了(碼頭化的)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)

作為參考,我在同一writer目錄中的Dockerfile是:

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

您必須在docker-compose.yml中添加一個卷。 容器中的路徑應包含包含寫入文件的文件夾。 本地文件夾的路徑應包含您系統上要查看寫入文件的文件夾。

version: '2'

services:
  writer:
    build: writer/
    ports: 
      - 5000:5000
    container_name: writer
    volumes:
      - /PATH/TO/YOUR/LOCAL_FOLDER:/PATH/TO/FOLDER/IN/CONTAINER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM