我制作了一个 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 文件看起来像这样
因此,每当我构建 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/