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即可。

怎么编辑docker desktop里面容器的配置文件 docker容器内修改文件_django

如果容器内没有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