以前写的springboot项目是前后端一同放到同一个Jar包里面,因为这个前后端分离的好处,我也打算自己试一试。
上面两个标注我相信大家都懂,下面就直接进入正题,我今天遇到了两个坑,第一个坑就是403,第二个就是404这两个错误足足花了我三个小时,我觉得有必要记录一下。
404:
这个缘故就是Nginx压根没有找到index.html
docker run --name My_Nginx -p 8082:80 -v /var/MyApp/nginx/html:/usr/share/nginx/html -d nginx
这个里面有个坑,就是网上docker启动nginx方式五花八门, /var/MyApp/nginx/html:/usr/share/nginx/html 所以大家需要注意这个-v冒号前面那个是本地路径,冒号后面是docker容器中的路径,建议大家docker exec -it 你的nginx容器 /bash/bin 去查看下容器中的/etc/nginx/default.conf中的配置文件,nginx默认是去读取/usr/share/nginx/html中的静态文件,所以大家可以直接将你的静态文件 -v映射到这个容器中的/usr/share/nginx/html这个路径。这样就很简单就能实现部署了。但是我今天犯了个错误,就是映射可以直接说成把你的本地路径直接挂载到那个容器中的路径,你docker exec -it 的时候进去查看和你本地路径映射的那个路径里面的所有文件都和你系统路径都是一模一样的,即使你新增删除文件了,而我今天与大盘的问题就是,我自己挂载了一个default.conf文件文件中的路径是/var/MyApp/nginx/html,而我去容器中查看的时候发现这个目录下没有任何东西,我好像-v的时候不对,
我docker 启动的时候映射的是这个路径,然而我又去挂载了default.conf,上面显示的是
所以当然找不到,映射的是/etc/nginx/html,我却叫我的nginx去/var/MyApp中去找,自己给自己制造麻烦
403:
这个问题就是权限不足问题,我刚开始弄得时候default.conf文件是这个样子的
因为好像nginx配置的本地路径及父路径之类的都要有相应的权限,所以当时把/var下的所有文件及路径全弄成chmod -R 777 /var 但这样也不行,可能是因为是root路径的远古,所以我就把路径变成/var下,把前端生成的vue静态资源放到这个第一张图上面那个路径了,结果就成功解决了403.