linux doker 修改容器内部文件的方法
以django 启动报错作为示例来说, 错误信息内容如下:
File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query\n
query = query.decode(errors=\'replace\')\n
AttributeError: \'str\' object has no attribute \'decode\'
解决办法:
1. 直接进入容器修改
将容器内/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/operations.py
文件的146行中的query.decode
改为 query.encode
即可。
如果容器内没有vim 或者vim安装起来不是很方便,可以采用方法二,利用宿主机的vim 来进行文件修改
2. 在宿主机修改容器内部文件
- 将容器内文件拷贝到宿主机指定目录下
# 语法:
docker cp 容器名称:容器内文件路径 要拷贝到宿主机的文件路径
# 示例:
docker cp web_api:/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/operations.py ./
- 宿主机上vi修改编辑文件
# 将operations.py的146行中的query.decode改为 query.encode, 如上图所示
- 将宿主机文件重新拷贝回容器内
# 语法
docker cp 宿主机文件目录 容器名称:要拷贝到容器内的目录
# 示例:
docker cp ./operations.py web_api:/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/operations.py
- 重启容器
docker restart web_api
标签:operations,容器,py,文件,宿主机,linux,query,doker
From: https://www.cnblogs.com/yyx0417/p/16874658.html