在正式机部署过程中发现路径并不是代码中指定的那样,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
的提示。看到这一提示,我想不对啊,正式机中我之前命名安装了zip
和unzip
了呀,还当场测试了一下,发现是能用的。呆滞了一会猛然想起,正式机用的是docker
。。。所以要在docker
中装一下这个命令。(话说外研阅读这个正式机真的是个大空壳,啥命令都没,vim
,tmux
都是我装的现在还得去装docker
里的zip
和unzip
,正式机是CenterOS
,docker
环境是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
,成功进入!!于是赶紧尝试下载zip
和unzip
命令,发现竟然可以,真的哭死。装完以后信心慢慢地重新测试功能,这回终于没有再报错,正式机epub
问题也解决了~