安装若依后端

安装jdk Tomcat 配置失败 直接看下面的 nginx

安装Tomcat

下载镜像docker pull tomcat

下载文件(0积分)

conf.tar.gzwebapps.tar.gz 必须有 点击下载或自己备份,方法如下
文件来源-
一条条顺序执行

docker run --name tomcat -p 8082:8080  -d tomcat 
docker exec -it tomcat bash
cd /usr/local/tomcat
tar -zcvf /usr/local/tomcat/conf.tar.gz conf
rm -rf webapps
mv webapps.dist webapps
tar -zcvf /usr/local/tomcat/webapps.tar.gz webapps
exit
cd /home/docker/tomcat
docker cp tomcat:/usr/local/tomcat/conf.tar.gz /home/docker/tomcat
docker cp tomcat:/usr/local/tomcat/webapps.tar.gz /home/docker/tomcat
tar -zxvf conf.tar.gz
tar -zxvf webapps.tar.gz
ls

开始映射持久化目录

# 持久化目录 /home/docker/tomcat
cd /home/docker/tomcat
mkdir logs #持久化-日志
tar -zxvf conf.tar.gz #持久化-配置
tar -zxvfwebapps.tar.gz #持久化-应用

若依前后端分离项目怎么用docker部署war包 若依 docker部署_docker

启动容器

docker run --name tomcat -p 8082:8080 -v /home/docker/tomcat/webapps:/usr/local/tomcat/webapps -v /home/docker/tomcat/logs:/usr/local/tomcat/logs -v /home/docker/tomcat/conf:/usr/local/tomcat/conf -d tomcat

404-

  1. 查看webapps和conf和logs文件夹, 均不为空才正常
  2. 删除webapps.dist
docker exec -it tomcat bash
# 备份
mv webapps.dist back.webapp
# 删除
# rm -rf webapps.dist

映射目录不要删除或移动
里面的子目录可以增删

# 这几个目录有变动则映射失效
/home/docker/tomcat/webapps
/usr/local/tomcat/webapps 
/home/docker/tomcat/logs
/usr/local/tomcat/logs 
/home/docker/tomcat/conf
/usr/local/tomcat/conf

成功

此时 访问 http://192.168.232.130:8082/

若依前后端分离项目怎么用docker部署war包 若依 docker部署_docker_02


根目录为

/home/docker/tomcat/webapps

加载若依

若依项目在ruoyi-ui下运行 npm run build:prod 会在ruoyi-ui下生成dist文件夹: 前端打包文件

Tomcat配置

修改server.xml,Host节点下添加

<Context docBase="" path="/" reloadable="true" source=""/>

修改完传到宿主机-持久化目录即可

若依前后端分离项目怎么用docker部署war包 若依 docker部署_tomcat_03

dist目录

dist目录的文件夹下新建WEB-INF文件夹,并在里面添加web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
        http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        version="3.1" metadata-complete="true">
     <display-name>Router for Tomcat</display-name>
     <error-page>
        <error-code>404</error-code>
        <location>/index.html</location>
    </error-page>
</web-app>

压缩-上传-解压

若依前后端分离项目怎么用docker部署war包 若依 docker部署_nginx_04

前台打开

端口映射为8082

若依前后端分离项目怎么用docker部署war包 若依 docker部署_若依_05


浏览器

若依前后端分离项目怎么用docker部署war包 若依 docker部署_docker_06

成功

至此, 前台部署完成, 静态资源加载成功

验证码问题-请求后端失败
后端部署到另一个docker镜像里, 映射端口为8081,
经过排查 tomcat无 vue-cli-service 请求重定位,
待定 可能解决办法 再装个nodjs 做请求转发

Nginx 部署

安装nginx

# 搜索镜像并安装
docker search nginx
docker pull nginx:latest
# 运行
docker run --name nginx -p 80:80 -d nginx
# 获取一份默认配置
docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx/conf/nginx.conf
# default.conf 稍后会用到
docker cp nginx:/etc/nginx/conf.d/default.conf /home/docker/nginx/conf/
#删除刚才的
docker stop nginx
docker rm nginx
# 映射目录
docker run --name nginx -v /home/docker/nginx/web:/usr/share/nginx/html -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -p 80:80 -d nginx

验证持久化

在宿主机持久化目录web新建index.html 随便写点内容

若依前后端分离项目怎么用docker部署war包 若依 docker部署_nginx_07


前台 192.168.232.130:80 -此链接为虚拟机内centos访问ip路径

若依前后端分离项目怎么用docker部署war包 若依 docker部署_tomcat_08

部署若依

ok 将dist解压至持久化目录 -v /home/docker/nginx/web

若依前后端分离项目怎么用docker部署war包 若依 docker部署_若依_09


配置nginx

参考配置 这个配置是前后一体化配置使用的 不能通用 下载配置(0积分) 将配置放入 /home/docker/nginx/conf

重启镜像 docker restart nginx

访问 http://192.168.232.130:80

有验证码 后台已调通

若依前后端分离项目怎么用docker部署war包 若依 docker部署_docker_10


ok

若依前后端分离项目怎么用docker部署war包 若依 docker部署_nginx_11


配置文件详解

http->server->location /

root   /usr/share/nginx/html;

/usr/share/nginx/htmldefault.conf文件中的默认配置 无需改动

http->server

listen       80;
server_name  192.168.232.130;

location /prod-api/{
	...
	proxy_pass http://192.168.232.130:8081/;
}

是将所有指向192.168.232.130:80 的链接转发到192.168.232.130:8081(后端)中

nginx代理详解
#在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径,去掉匹配路径;
#如果没有/,表示相对路径,把匹配的路径部分也给代理走。

#假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。

#第一种:
location /proxy/ {
	proxy_pass http://127.0.0.1/;
}
#代理到URL:http://127.0.0.1/test.html

#第二种(相对于第一种,最后少一个 / )
location /proxy/ {
	proxy_pass http://127.0.0.1;
}
#代理到URL:http://127.0.0.1/proxy/test.html

#第三种:
location /proxy/ {
	proxy_pass http://127.0.0.1/aaa/;
}
#代理到URL:http://127.0.0.1/aaa/test.html

#第四种(相对于第三种,最后少一个 / )
location /proxy/ {
	proxy_pass http://127.0.0.1/aaa;
}
#代理到URL:http://127.0.0.1/aaatest.html

vue.config.js中的链接转发

devServer: {
    host: '0.0.0.0',
    port: port,
    open: true,
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://192.168.232.130:8081`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    },
    disableHostCheck: true
  },

开机启动

docker update --restart=always nginx

至此完工