python - 从 python 脚本更新文件后,在 docker 中复制的 Json 文件不会更改

标签 python json docker ubuntu updating

我制作了一个 python 脚本来更新 json 文件。代码如下所示:-

with open('config.json') as config_file:
    data = json.load(config_file)
Device_ID = data['id']
Device_API = data['API']
if Device_ID=='':
    time.sleep(2)
    Device_id = str(input("Enter Device ID:"))
    Device_details = {"id": "",
                      "API": ""}
    Device_API = "https://api.com/"
    Device_details["id"] = Device_id
    Device_details["API"]=Device_API
    Device_ID=Device_id
    with open('config.json', 'w') as json_file:
        json.dump(Device_details, json_file)
    json_file.close()
我编写docker文件来制作docker,这里是: -
FROM python:3.6
CMD apt-get install python3-dev
COPY PingStatus.py .
COPY config.json .
CMD python3 PingStatus.py
现在我使用 'docker run -i mycode' 命令来运行镜像。 (我遇到了EOF错误,所以我使用了'-i')
并且它的工作良好。
我的 config.json 文件看起来像这样
json
因此,每当我构建 docker 并运行 docker 时,它都会要求提供 Device_Id,但每当我再次运行 docker 时,它会一直要求相同,我无法理解这个问题。但是我编写了一个代码来更新现有的 json 文件,那么为什么它一直在询问设备 ID。
我尝试只运行脚本并且它工作正常。就像它第一次询问设备 ID 但在第一次尝试后,每次它都会从 json 文件中获取设备 ID。
我知道我的 python 脚本在 docker image/container 中运行时没有更新 json 文件。

最佳答案

该文件仅在 docker 容器内更改。您可以使用卷运行程序,这是在容器和主机之间共享文件的一种方式。您应该删除 COPY config.json .从您的 Dockerfile 行,并使用 docker run -iv "$(pwd)/config.json:/config.json:Z" mycode 运行 docker 实例

关于python - 从 python 脚本更新文件后,在 docker 中复制的 Json 文件不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63776142/

相关文章:

javascript - 将多个json文件导入到一个js数组中

docker - VS Build Tools 不会安装在 windows server 2016 上的 docker 容器中

python - 有没有更快的方法来遍历 DataFrame?

python - Django无法运行manage.py runserver如何解决?

c# - C# 中解析此日期格式 "Mon Oct 07 00:00:00 EDT 2013"的正确方法是什么?

java - 无法在 Docker 镜像中安装 R 包

symfony - Docker-compose自动安装wkhtmltopdf

python - 如何在 Pandas DataFrame 散点图中添加图例?

python - 使用 Selenium 抓取测试一致性

javascript - 将数据从 JSON 传递到 Backbone > 模板页面