Epub功能正式机部署

yuanheci 2022年11月30日 212次浏览

  在正式机部署过程中发现路径并不是代码中指定的那样,epub的存储路径并不是和测试机一样放在/home/backend/file/upload/...下面,而是不知道放哪里去了。。。生成倒是能生成,但是不知道存在哪里了。

代码中关键路径由这里得到:
String fullPath = FileUtil.amendPath(AppConfig.getRealUploadPath(BOOK_PATH) + "epubNewDc");

  这里计算得到的是相对路径 /file/upload/book/source/epubNewDc,由于测试机是安装在主机上,而正式机是部署在docker中,并且在部署的时候设置了目录挂载,因此它有一个路径前缀!!

  这里需要查找设定的epubNewDc文件夹,可以通过命令find / -name epubNewDc来查找,结果为:
/var/lib/docker/overlay2/e9a1dc7cd2fcc75c8a3ea961b5007f351e8fb378c7a46f86c51f1cc5560de604/merged/file/upload/book/source/epubNewDc
/var/lib/docker/overlay2/e9a1dc7cd2fcc75c8a3ea961b5007f351e8fb378c7a46f86c51f1cc5560de604/diff/file/upload/book/source/epubNewDc

可以看到
/var/lib/docker/overlay2/e9a1dc7cd2fcc75c8a3ea961b5007f351e8fb378c7a46f86c51f1cc5560de604/diff/
这一长串奇怪的东西就是容器对宿主机的路径映射

  本来在测试机中代码路径用的是绝对路径,从/home/backend开头,后来发现其实不用加这个前缀,无论是测试机环境还是正式机的docker环境,绝对路径的前缀都可以省略,这和springboot工程也运行在这个环境中,所以默认就是在这个前缀的路径当中,我们只需要指定从file开始的相对路径即可!知道了这一点就很好做了。

  于是修改代码后再次部署,在日志中发现了command-zip: not found的提示。看到这一提示,我想不对啊,正式机中我之前命名安装了zipunzip了呀,还当场测试了一下,发现是能用的。呆滞了一会猛然想起,正式机用的是docker。。。所以要在docker中装一下这个命令。(话说外研阅读这个正式机真的是个大空壳,啥命令都没,vimtmux都是我装的现在还得去装docker里的zipunzip,正式机是CenterOSdocker环境是Ubuntu)。

  于是我在宿主机执行了安装命令apt-get install zip unzip,好,立马给我来报错,折磨开始!报错信息:Package zip is not available, but is referred to by another package.于是我去执行了 apt-get update更新一下,直接给我来一个权限问题,好,直接一顿上网冲浪,安装了权限,再安装还是不行。。。

  既然在外面装不上那我进容器看看呗,于是直接docker attach containerID,好了直接给我卡主不动,容器都不让我进了。再次上网搜索答案,发现问题是容器启动的时候设置的守护态导致的,于是改成另一种方式docker exec -it containerID /bin/bash,成功进入!!于是赶紧尝试下载zipunzip命令,发现竟然可以,真的哭死。装完以后信心慢慢地重新测试功能,这回终于没有再报错,正式机epub问题也解决了~