Docker Tomcat容器上传图片时, 遇到点问题:图片可正常上传, 但是后续处理时有问题, 比如再上传到七牛云; 而非 Docker 方式部署的没问题!

容器问题

后来通过多次调试找到了问题: tomcat容器无法直接访问到宿主机

上传图片大致步骤:

  1. 正常的表单上传
  2. 后端接收到文件流后, 存本地临时文件
  3. 拼接访问链接, 并返回到前端
  4. 前端以此文件(图片)的链接为参数, 调用上传七牛云的接口
  5. 接口处理图片上传到七牛云时失败

前面1~4步没有问题, 而且第3步返回的链接是可以访问的(内网宿主机IP+端口), 第5步处理图片是以网络图片方式处理的, 不过此图片它是访问不了的!

通过: docker exec -it tomcat8 /bin/bash 方式进入到容器里, 这里直接:ping 宿主机IP 就不好使了, 当然图片读取失败, 后面自然不好使

解决方案

找到了问题所在, 解决办法就有针对性了: 能访问到图片即可, 方式不限

  • 图片上传后, 使用容器里的本地文件方式读取(跟映射到宿主机的路径没有关系)
  • 宿主机+端口 替换成成 localhost+暴露端口
  • 使用域名方式, 或公网IP

我这里直接使用替换的方式, 中间加个步骤, 单独处理一下图片的URL即可

这里要考虑一下是否通用, 其他部署(正式环境)也得考虑是否有问题!



blog comments powered by Disqus

Published

15 July 2018

Tags