Pycharm部署含USER指令Dockerfile报数值超出int范围错误怎么解决
问题根因
- 你看到的
JsonMappingException数值溢出属于PyCharm内置Docker插件依赖的docker-java旧版本的已知bug:Docker daemon返回的错误码实际是无符号32位整数,而旧版docker-java库用有符号int类型接收,错误码-1的补码转成无符号就是4294967295,直接触发数值溢出序列化失败,掩盖了真实的Docker构建错误。 - 你的Dockerfile真实错误出在
RUN adduser -D myuser这一行:要么是你使用的python:3.7-alpine镜像默认以非root用户运行,执行adduser操作没有足够权限,要么是你的Docker daemon配置了用户命名空间重映射,普通用户没有创建新用户的权限,最终导致构建失败。
解决方案
- 优先修复Dockerfile权限问题,修改后内容如下:
FROM python:3.7-alpine # 切换到root权限执行用户创建操作 USER root RUN adduser -D myuser USER myuser CMD ["echo", "This is test application" ]
- 若修改后仍报错,可绕开PyCharm Docker插件直接验证:在Dockerfile所在目录打开终端,执行
docker build .直接获取Docker原生返回的真实错误信息,根据原生报错调整即可。 - 长期可升级PyCharm到2023.1及以上版本,新版已经修复了docker-java库的数值溢出bug,可以正常展示真实错误内容。
通用排查思路
- 第一步先脱离IDE插件执行原生Docker命令,确认是Docker本身构建失败还是插件解析报错。
- 若原生构建正常,直接升级IDE Docker插件即可解决问题。
- 若原生构建失败,根据原生输出的错误信息逐行验证Dockerfile指令的合法性,重点检查涉及权限、系统命令调用的RUN、USER指令。
内容的提问来源于stack exchange,提问作者abhijeet more
相关产品推荐
相关产品推荐

