服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - 服务器知识 - Docker+Nginx打包部署前后端分离步骤实现

Docker+Nginx打包部署前后端分离步骤实现

2023-03-27 15:07别团等shy哥发育 服务器知识

这篇文章主要介绍了Docker+Nginx打包部署前后端分离步骤实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

问题描述

最近做了一个前后端分离的通用权限管理系统,今天想用自己的服务器部署下,本地部署测试是没问题的,但是部署在服务器上还是出现了许多小插曲,这里大概记录一下吧。

项目打包

 

前端项目打包

由于我需要在同一个端口号下使用nginx部署多个前端项目,所以需要额外设置一些东西。

修改vue.config.js文件

添加如下配置:

Docker+Nginx打包部署前后端分离步骤实现

router配置中添加base属性

  1. const createRouter = () => new Router({
  2. // mode: 'history', // require service support
  3. scrollBehavior: () => ({ y: 0 }),
  4. routes: constantRoutes,
  5. base:'/guigu'
  6. })

Docker+Nginx打包部署前后端分离步骤实现

打包前端项目

执行命令:

  1. npm run build:prod

Docker+Nginx打包部署前后端分离步骤实现

Docker+Nginx打包部署前后端分离步骤实现

出现dist文件夹说明打包成功

Docker+Nginx打包部署前后端分离步骤实现

后端项目打包

这里我跳过了test步骤

Docker+Nginx打包部署前后端分离步骤实现

打包之后target文件夹下面会有jar包

Docker+Nginx打包部署前后端分离步骤实现

将前端和后端的打包文件上传到服务器

这里上传的方法较多,不过多赘述了。

Docker+Nginx打包部署前后端分离步骤实现

将dist.tgz文件解压即可

  1. tar -zxvf dist.tgz -C

写你的解压路径即可

nginx反向代理配置

部分配置如下:

Docker+Nginx打包部署前后端分离步骤实现

  1. server {
  2. listen 80;
  3. server_name localhost;
  4.  
  5. #charset koi8-r;
  6.  
  7. #access_log logs/host.access.log main;
  8.  
  9. location / {
  10. proxy_pass http://blog;
  11. proxy_set_header HOST $host;
  12. proxy_set_header X-Forwarded-Proto $scheme;
  13. proxy_set_header X-Real-IP $remote_addr;
  14. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  15. }
  16.  
  17. location ^~/prod-api/ {
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header REMOTE-HOST $remote_addr;
  20. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  21. proxy_set_header X-NginX-Proxy true;
  22. proxy_pass http://127.0.0.1:8800/;
  23. }
  24. # guigu-auth配置
  25. location /guigu {
  26. alias /opt/guigu-auth/guigu-front/;
  27. index index.html index.htm;
  28. }
  29.  
  30. #error_page 404 /404.html;
  31.  
  32. # redirect server error pages to the static page /50x.html
  33. #
  34. error_page 500 502 503 504 /50x.html;
  35. location = /50x.html {
  36. root html;
  37. }
  38. }

上面nginx.conf的配置分为两个部分,第一个部分实现前端vue的映射,

即将

  1. /opt/guigu-auth/guigu-front/index.html

映射成

  1. 127.0.0.1:8080/guigu
  1. location /guigu {
  2. alias /opt/guigu-auth/guigu-front/;
  3. index index.html index.htm;
  4. }

第二部分是将后端请求指向后端项目。这里直接替换了uri的前缀

  1. prod-api

也就是说假设前端向后端发送的请求为

  1. http://localhost:8800/prod-api/admin/system/index

经过nginx反向代理后,实际上到达后端的uri为

  1. http://localhost:8800/admin/system/index

至此,前端项目部署完毕

访问

  1. codeleader.top/guigu

会出现如下页面说明前端部署成功

Docker+Nginx打包部署前后端分离步骤实现

后端通过Dockerfile打包成docker镜像

 

这里为什么使用docker?

我开始不想用这个,是直接将jar包在服务器上部署的,觉得小项目没必要用docker。

但是由于我以前搭建个人博客的时候装的jdk11,这个项目使用jdk8开发的,环境不一致,docker的环境隔离机制非常适合现在这种情况,关于docker使用场景请看我docker专栏,这里不再赘述。

编写Dockerfile

  1. # 基础镜像使用java
  2. FROM java:8
  3. # 作者
  4. MAINTAINER xtt
  5. # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
  6. VOLUME /tmp
  7. # 将jar包添加到容器中并更名为guigu_docker.jar
  8. ADD service-system.jar guigu_docker.jar
  9. # 运行jar包
  10. RUN bash -c 'touch /guigu_docker.jar'
  11. ENTRYPOINT ["java","-jar","/guigu_docker.jar"]
  12. #暴露8800端口作为微服务
  13. EXPOSE 8800

构建Docker镜像

将打包的后端项目jar包和Dockerfile放在同一个目录下面

Docker+Nginx打包部署前后端分离步骤实现

执行命令如下命令构建镜像:

  1. docker build -t guigu_docker:1.0 .

Docker+Nginx打包部署前后端分离步骤实现

查看构建的镜像

  1. docker images

Docker+Nginx打包部署前后端分离步骤实现

运行容器

  1. docker run -d -p 8800:8800 --name guigu-auth guigu_docker:1.0

Docker+Nginx打包部署前后端分离步骤实现

Docker+Nginx打包部署前后端分离步骤实现

运行测试

点击登录按钮,成功进入系统,说明前后端部署成功。

Docker+Nginx打包部署前后端分离步骤实现

Docker+Nginx打包部署前后端分离步骤实现

Docker+Nginx打包部署前后端分离步骤实现

现在这种部署方式跟部署单个微服务的方法一样,但是生产中不可能只有一个微服务,所以需要借助容器编排来实现一次打包一堆微服务,包括docker-compose、docker swam、k8s、DevOps等这还需要大量的开发实践才行,这些技术光学没用,要在自己的项目中实践才行。其实这里nginx和前端也可以用容器部署的,但这里暂时感觉没必要。

开发+部署多有意思啊,现在整天搞自己不感兴趣的方向已经和当初自己想象的研究生科研生涯完全不同了,这种感觉或许只有自己读研之后才能感同身受了,虽有诸多无奈,但我绝不会放弃我所热爱的技术,架构师之路任重而道远。

以上就是Docker+Nginx打包部署前后端分离步骤实现的详细内容,更多关于Docker+Nginx部署前后端分离的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/qq_43753724/article/details/128509914

延伸 · 阅读

精彩推荐