首页 > 解决方案 > 更改 docker run 命令以接受对 CSV 文件的更改

问题描述

只是为了解释一下:我的 docker 容器当前设置为每次我上传或更改 python 文件时自行“刷新/更新”,例如:“main.py”

这正是我想要的,而且很漂亮,多亏了这个命令:

' -v ~/fastapi_websocket:/fastapi_websocket '

这是我用来启动和运行的所有 3 个 docker 命令:

1. docker build -t fastapiserver-websocket .

2. docker run -d -e PYTHONUNBUFFERED=1 -v ~/fastapi_websocket:/fastapi_websocket --env-file env_vars.env --name run-fastapi-websocket -p 5080:80 fastapiserver-websocket

3. docker logs --tail 100 -f run-fastapi-websocket

因此,一旦我输入这 3 个命令,我就可以继续将新文件上传到服务器,而无需停止/删除容器/图像,然后创建一个新文件,docker 会自动完成。

现在:现在我在我的 python 应用程序中添加了一个脚本,将数据写入 CSV 文件,以防你知道 python,这里是函数:

def write_data_to_CSV(machine_ID, leli, acc_y, mag_x):
    with open('/i_want_my_CSV_inside_here/sensor_data_excel.csv', 'a', newline='') as csvfile:
        filewriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)

        filewriter.writerow([get_current_time(), machine_ID, leli, acc_y, mag_x])

所以这里的问题是,当新文件写入 CSV 文件时,docker 容器会自行更新/刷新,因为我已经使用上面显示的命令告诉容器这样做。

我的问题是:是否可以更改此行:

docker run -d -e PYTHONUNBUFFERED=1 -v ~/fastapi_websocket:/fastapi_websocket --env-file env_vars.env --name run-fastapi-websocket -p 5080:80 fastapiserver-websocket

接受对 CSV 文件的更改而不刷新容器?

标签: pythondockervolume

解决方案


编辑:解决了。

这是答案:

我在 app 文件夹之外安装了一个新卷:-v ~/CSV_files:/CSV_files

蟒蛇方面:

with open("../CSV_files/a_CSV_file.csv", 'a', newline='') as csvfile:
    filewriter = csv.writer(csvfile, delimiter=';', quoting=csv.QUOTE_MINIMAL)

推荐阅读