python - 从 python 脚本更新文件后,在 docker 中复制的 Json 文件不会更改
问题描述
我制作了一个 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 实例docker run -iv "$(pwd)/config.json:/config.json:Z" mycode
推荐阅读
- php - Laravel 我添加了 morphmany SQLSTATE[42S22]: Column not found: 1054 Unknown column 'staff.staff_id' in 'field list'
- java - 用 REFLECTION 打破 SINGLETON 模式的论点是否实用?
- aws-lambda - Cube.js 在无服务器环境中超时
- javascript - 如何使用新令牌动态更新 AJAX GET 请求标头
- javascript - 如何根据角度中的当前用户角色导入svg
- php - 当 MySQL 文本类型中的 heredoc 字符串时,PHP heredoc 不起作用
- python - 如何更改我的代码以通过除法求解模方程?
- tomcat - Apache Tomcat 8.5.51 是否支持 content-security-policy 标头
- linux - 监控在专用 cpu 内核中执行的进程
- python - XGBoost 回归器中的“reg_alpha”参数。使用高值不好吗?